not approved
Finalize Helios
Current Project Status
Unfunded
Amount
Received
₳0
Amount
Requested
₳416,100
Percentage
Received
0.00%
Solution

The Helios library first needs to include all features that devs expect. Then it must be audited by a reputable firm. Once finalized the right tutorials/courses can also be created.

Problem

Helios is a complete JS/TS SDK for Cardano smart contract development. This library should be finalized to get a stable v1 and then audited.

Feasibility
Value for money
Impact / Alignment

Team

1 member

Finalize Helios

Please describe your proposed solution.

The core idea of this proposal is that once helios.js is audited (currently around 50k lines of code), the supply-chain risk is reduced to a minimum, as Helios has no dependencies and doesn't require a compiler.

The work required to get helios.js to a final state so it can be audited:

  • discuss missing features with the Helios community
  • currently known missing language features (Iterators, multi-valued Options, pattern matching…)
  • implement a state-of-the-art coin-selection algorithm that can be used as the default in most situations.
  • tx building functionality in the Helios language itself (using different frameworks/languages for on-chain and off-chain logic isn't practical for big dApps).
  • modify helios.js to be usable by the VSCode IDE plugin directly, so that the library itself can be used as the "language server".
  • implement CIP49 without introducing dependencies
  • implement CIP58, CIP85, and CIP381 once they have been incorporated into Plutus-Core (might have to be postponed to v2 of Helios)

Once finalized the library will be audited. The audit report will contain the IPFS content-hash of the audited helios.js file. That way the library can be downloaded without risk of tampering.

So far Helios hasn't done a serious marketing effort. Part of the Catalyst grant will be used for the creation of free video tutorials/courses, and for more engaging and more frequent social media posts.

How does your proposed solution address the challenge and what benefits will this bring to the Cardano ecosystem?

Helios, along with other frameworks that have been created over the past year, is already a huge improvement of the Cardano development experience.

The fact that it hasn't yet been audited is preventing some teams building on Cardano from adopting it for their projects.

The off-chain API of the library isn't very dev friendly, as much of the on-chain logic would need to be duplicated in the JS/TS. It is much more dev friendly to allow tx-building in the language itself, as the compiler can be leveraged to provide additional features in the background (eg. accessing the hashes of all the validator scripts via name).

We are confident that a finalized Helios will provide the best possible dev experience for Cardano for those wanting to stick with a purely JS/TS tech stack.

How do you intend to measure the success of your project?

Weekly npm package downloads. Documentation website metrics. Dev feedback via social media platforms.

Please describe your plans to share the outputs and results of your project?

Frequent code merges. Major changes posted on social media platforms. Minor changes posted on Discord. Courses/tutorials on youtube or Udemy.

What is your capability to deliver your project with high levels of trust and accountability?

Helios is already in an advanced stage of development and already has quite a few accolades from the Cardano community.

The remaining effort simply requires more time.

What are the main goals for the project and how will you validate if your approach is feasible?

Helios is 80% complete. This proposal targets the remaining 20%. Nothing has so far indicated that any of the remaining features are infeasible.

Please provide a detailed breakdown of your project’s milestones and each of the main tasks or activities to reach the milestone plus the expected timeline for the delivery.

1: missing language features (240 hours of work, t0 + 1.5months)

  • discuss with Helios community.
  • implement shadow type-parameters (eg. for ByteArrays of known length, or for Iterators which only contain data-lists).
  • implement multi-valued Iterator type, optimized if it only wraps data-lists.
  • implement multi-valued Option type
  • implement missing builtin methods
  • implement user-defined TypeClasses
  • in-language unit testing syntax

2: tx-building in the Helios language (160 hours of work, t0 + 2.5months)

  • discuss with Helios community what a complete network interface looks like
  • implement best-possible coinselection algorithm
  • implement network interfaces for other popular APIs (not just Blockfrost)
  • implement network fetching functions in the Helios language, using the Iterator type for paginated responses.
  • create a "bundle" command in the Helios CLI that generates a "contract.js" or "protocol.js" artifact based on the Helios scripts in the current repository.
  • make sure the bundle works efficiently in serverless environments.
  • make sure the bundle is easily debuggable in production (eg. rerun any failed validators using the non-simplified scripts, which still contains all the print("…") expressions).
  • stretch goal: extend emulator to staking functionality

3: improve the VSCode IDE plugin (280 hours of work, t0 + 4.5months)

  • finalize syntax-error diagnostics.
  • implement type-error diagnostics.
  • improve the helios.js error messages, because they will be reflected directly in the IDE diagnostics.
  • implement auto-complete features.
  • implement formatting.
  • modify the Helios playground to use a web version of VSCode with the Helios IDE plugin installed by default.

4: implement a debugger in the VSCode IDE plugin (240 hours of work, t0 + 6months)

  • add UI fields into which values for Datums, Redeemers and ScriptContexts can be copied. The plugin should then figure out which validator is being run, and launch a stepping debugger using that validator as an entry-point.
  • connect the IDE to the Plutus-Core evaluation engine included in Helios.

5: implement Plutus-Core related CIPs in Helios (300 hours of work, t0 + 8months)

  • CIP49
  • CIP58
  • CIP85
  • CIP381
  • if some of these CIPs take too long to be completed their implementation will be postponed to v2 of Helios

6: courses/tutorials (160 hours of work, t0 + 9months (in parallel with audit))

  • create video tutorials and courses covering a range of subjects:
  • minting
  • auction
  • swap
  • general architectural considerations

7: audit + social media marketing (estimated 20000USD cost + 120 hours of work, t0 + 12months)

  • get quotes from 3 reputable firms
  • arrange an audit with the best option out of 3

Milestone 7 is also the final acceptance milestone

Please describe the deliverables, outputs and intended outcomes of each milestone.

1: complete Helios language

2: complete tx-building capability from with Helios language

3: complete VSCode IDE plugin (except debugging)

4: complete in-IDE debugger

5: complete CIP support

6: up-to-date official documentation published online

7: audited v1 helios.js

Please provide a detailed budget breakdown of the proposed work and resources.

75USD is Christian's rate. Whenever he isn't available an equivalent external FTE will be hired (1 FTE at 75USD/hour, or 2 at 37.5USD/hour).

The social media marketing rate is assumed to be 45USD/hour.

Current USD/ADA rate: 0.31

Cost of each milestone:

  1. 240h -> 58000 ADA
  2. 160h -> 38700 ADA
  3. 280h -> 67700 ADA
  4. 240h -> 58000 ADA
  5. 300h -> 73000 ADA
  6. 160h -> 38700 ADA
  7. 20000USD + 120h*45USD/h -> 82000ADA

Total: 416100 ADA

Left-over money due to price fluctuations will be invested in stretch goals.

Who is in the project team and what are their roles?

Christian Schmitz: creator of Helios

Before getting into Cardano Christian used to work as a mechanical engineer developing fluid mechanics simulation prototypes. <https://www.openengineer.dev/>

Christian has always been interested in language development (eg. <https://www.openengineer.dev/casperlang.html>)

For outsourcing: devs can be used from the former Kreate-team.

How does the cost of the project represent value for money for the Cardano ecosystem?

A finalized Helios will allow dApps to be created at a much faster pace, using less resources. The savings per team that adopts Helios will potentially be more than this grant.

Teams that have already seen significant improvements: Ada Handle, Kreate, Dropspot.io, Littercoin

close

Playlist

  • EP2: epoch_length

    Authored by: Darlington Kofa

    3m 24s
    Darlington Kofa
  • EP1: 'd' parameter

    Authored by: Darlington Kofa

    4m 3s
    Darlington Kofa
  • EP3: key_deposit

    Authored by: Darlington Kofa

    3m 48s
    Darlington Kofa
  • EP4: epoch_no

    Authored by: Darlington Kofa

    2m 16s
    Darlington Kofa
  • EP5: max_block_size

    Authored by: Darlington Kofa

    3m 14s
    Darlington Kofa
  • EP6: pool_deposit

    Authored by: Darlington Kofa

    3m 19s
    Darlington Kofa
  • EP7: max_tx_size

    Authored by: Darlington Kofa

    4m 59s
    Darlington Kofa
0:00
/
~0:00