open-index/open-npm huggingface dataset:
npm package: @helios-lang/compiler
Description: 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
Author: Christian Schmitz
Latest version: 0.17.32

# 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
npm package: @helios-lang/crypto
Description: Cryptography primitives used throughout HeliosLang codebase
Author: Christian Schmitz
Latest version: 0.2.3

# crypto

Cryptography primitives used throughout the HeliosLang codebase:

  * bech32
  * blake2b
  * ECDSASecp256k1
  * Ed25519
  * hmac
  * hmacDrbg
  * keccak_256
  * pbkdf2
  * sha2_256
  * sha2_512
  * sha3_256
  * SchnorrSecp256k1

Advantages of this library:
  
  * No dependencies (not even on the SubtleCrypto/NodeJSCrypto builtins for sha2 hashing)
  * Each implementation has been chosen to be as easy to audit as possible (sometimes compromising algorithm speed)

Disadvantage of this library:

  * Not the fastest (but mostly good enough)

## Timing attack resistance

Note: other side-channel attacks might be possible, but this library is not intended to be used in any other environments than browsers and servers.

### Signatures

Any method involving private keys should be resistant to timing attacks. Although no special effort was made to make any of this library constant time, the calculation time of elliptic signing algorithms are dominated by the point multiplication using a private random number `k` used in the first part of each signature (Ed25519, ECDSASecp256k1 and SchnorrSecp256k1). The unpredictable amount of time needed for the first part of the signature, it is impossible to determine the time needed for the multiplication involving the private key in the second part of each signature. So even we are able to time the signing without any noise, we wouldn't be able to find out anything about the private key.

### Zero-knowledge

TBD
npm package: @helios-lang/era
Description: "Conway"
Author: Christian Schmitz
Latest version: 0.1.5

# era

The purpose of this package ensures a smooth transition during Hard-Fork-Combinators (HFCs).

The current era is **Conway**. As of the 11th of April 2025, there is no pending HFC.

This package is part of the Helios-Lang SDK plumbing, and you won't commonly interact with it.
npm package: @helios-lang/ledger
Description: Latest ledger types (eg. for building transactions)
Author: Christian Schmitz
Latest version: 0.7.23

# Ledger

Types and classes needed for the mainnet ledger:
* Address
* AssetClass
* Block
* DCert
* Hashes
* PoolParameters
* PoolRelay
* TimeRange
* Tx
* TxInput
* TxOutput
* Value
* etc.


Eras:
1. Byron
2. Shelley
3. Allegra 
4. Mary
5. Alonzo
6. Babbage
7. Conway
npm package: @helios-lang/minswap
Description: WASM-free library for querying Minswap prices
Author: Christian Schmitz
Latest version: 0.2.6

# minswap

WASM-free library for querying Minswap DEX token prices

Minswap prices are based on the ratio of liquidity pool reserves. These reserves are tracked in the datum of a Pool UTxO.

## V2 Mainnet

For V2 pools, these pool UTxOs are located at the validator with hash: ea07b733d932129c378af627436e7cbc2ef0bf96e0036bb51b3bde6b

Each Pool UTxO contains the following a token with the following assetclass: f5808c2c990d86da54bfc97d89cee6efa20cd8461616359478d96b4c.4d5350
(tokenname `MSP` i.e. MinSwapPool)

## Pool datum structure

```
PoolData = ConstrData(0, [
    stakingCredential: ConstrData(0, [
        poolBatchingStakeCredential: LucidCredentialData
    ]) // 0
    assetA: AssetData // 1
    assetB: AssetData // 2
    totalLiquidity: IntData // 3
    reserveA: IntData // 4
    reserveB: IntData // 5
    baseFeeA: IntData // 6
    baseFeeB: IntData // 7
    feeSharing: OptionData<IntData> // 8
    allowDynamicFee: BoolData // 9
])

AssetData = ConstrData(0, [ByteArrayData, ByteArrayData])
OptionData<T> = ConstrData(0, [T]) | ConstrData(1, [])
BoolData = ConstrData(0, []) | ConstrData(1, []) // 0 is false, 1 is true
```
npm package: @helios-lang/uplc
Description: Cardano Untyped Plutus Core utility library
Author: Christian Schmitz
Latest version: 0.7.20

# uplc
Cardano Untyped Plutus Core javascript utility library

Responsabilities of this package:
  * deserialize UPLC into a UplcProgram
  * serialize a UplcProgram into UPLC flat 
  * evaluate a UplcProgram given certain inputs
    * async (for connecting stepping debugger)
    * sync (easier when calling from within React)
  * evaluate individual builtins syncronously (for IR optimizer)
  * partially apply inputs by wrapping a UplcProgram