over budget

Imperator - Secure, Imperative SCs

$60,000.00 Requested
Ideascale logo View on ideascale
Community Review Results (1 reviewers)
Impact / Alignment
Feasibility
Auditability
Solution

Imperator is a language for SCs that looks and feels like well known imperative languages popular among developers. It is a specialized language that focuses on security and intuitivity.

Problem:

Many programmers are unfamiliar with functional programming languages like Haskell/Plutus. Program analysis tools focus on imperative languages. Let's develop a secure, imperative SC language!

Yes Votes:
₳ 82,179,318
No Votes:
₳ 24,213,141
Votes Cast:
475

[IMPACT] Please describe your proposed solution.

This project is officially supported by the MuesliSwap Team (@MuesliSwapTeam)

Proposal Background

We included a proposal for imperator in Fund 8. Yet, despite positive feedback and high CA scores, EternalSwap narrowly missed funding. Due to high support by the community, we are reapplying in Fund 9 with this proposal updated per community feedback. Changes, marked with

  • Proposal: Increase focus on security and verification, add notes on Viper
  • Budget Breakdown section: More detailed roadmap/budget breakdown, reduction by 16%
  • Auditability: added clearly measureable goals/numbers

Imperator

This project is aimed at all developers, be they from a Smart Contract background on other Chains, on Cardano or even the average Software Engineer or Front-End developer.

Many developers want to join the Cardano community, but have trouble adjusting to the functional programming paradigma of Haskell. It is unintuitive for some, and mostly just very different from what they are used to. Therefore a lot of experience in development is also lost due to the need to change the programming style completely.

Imperator features a fully featured imperative language for Smart Contracts, that looks and feels like JavaScript or Solidity, widespread and popular imperative language.

The toolchain will include example Smart Contracts, detailed guides for compiling the Contracts and submitting validating transactions to them.

By feeling like more popular languages like JavaScript or Solidity, this project will attract a large amount of developers to expand the Cardano Ecosystem with creative and new contracts, the backbone of any DApp!

At the same time it is important to make sure smart contracts are verifiable. There exist many tools for analyzing imperative programming languages, such as Viper. One of the core features of the language should be that it supports translation into Viper or a similar automated verification tools and thus supports automated verification of its content. Integration of other tools such as Quickcheck are possible as well.

[IMPACT] Please describe how your proposed solution will address the Challenge that you have submitted it in.

By feeling like more popular languages like JavaScript or Solidity, this project will attract a large amount of developers to expand the Cardano Ecosystem with creative and new contracts, the backbone of any DApp!

It makes it easy for newcomers and maybe even support experienced developers on Cardano to adapt to the validator style of smart contract and come up with new solutions. This reduces the overhead of learning a very special new language when onboarding on Cardano.

The project should be among the recommended ways to implement Cardano Smart Contracts and will be suggested as resource for existing and onboarding developers.

[IMPACT] What are the main risks that could prevent you from delivering the project successfully and please explain how you will mitigate each risk?

The main issue will be to make to reach out to developers and get their feedback on the design of the language. After all, it is most important for them to feel comfortable with it.

For this purpose, I will stay in close contact to existing developers, and try to reach out to many more, whether they are on Cardano or not. I am already closely collaborating with the team behind the first DEX on Cardano, MuesliSwap. This way, I get rich feedback on the direction and design of the language, such that it is usable and comfortable for developers from any background.

[FEASIBILITY] Please provide a detailed plan, including timeline and key milestones for delivering your proposal.

I have already developed a prototype of the language, which can be accessed here:

https://github.com/nielstron/imperator

I plan to further develop the project within the next months and be ready to compile a simple Smart Contract within three months. After that, another six months are scheduled to incrementally extend the language with libraries and tools for common operations (kind of a standard library), suiting the developers needs.

Q3 2022

• Feature extension (Datatypes, Control Flow)

• Translation into Viper verification framework

• Automated Test Suite

• Build dApp developer network

Q4 2022

• First sample contract compiled¹

• Deploy on Testnet, validate

• Check up with developers: Improvements towards production?

2023 and onwards (future funding rounds)

• Extend tests, refinements towards production

• Tutorials, documentation

• Libraries

• Optimization

The MuesliSwap team will support the work while concurrently working on their own projects. They serve as technical consultants and provide me with insights into what developers need.

[FEASIBILITY] Please provide a detailed budget breakdown.

• 1-2 Developers: 50.000$ (total ~ 800h)

This project needs skilled developers that will design the new language and bridge it to the functional backbone of plutus smart contracts. The developer moreover needs to create easily understandable and accessible resources to interact with the project.

Breakdown:

  • Refine prototype 100h
  • Implement missing required features
  • Type system 100h
  • Datatypes 50h
  • Control Flow 50h
  • Automated Test Suite 200h
  • Implement/Deploy first contract on testnet 100h (expected Q3 2022)
  • Translation to Viper / Integration in verification framework 200h

• Technical Writing/ Marketing/ Networking (documentation, contacting dApps, collecting Feedback): 10.000$ (total ~450h)

The project has to be marketed and managed by an experienced marketing expert, that knows well about Cardano and the ecosystem. Moreover, some detailed documentation has to be developed that is easily accessible.

Breakdown:

  • Write technical documentation, blog posts 200h

  • Build dApp developer network 100h

  • Collect/Integrate Feedback from dev community 50h

  • Design branding material 50h

  • Integrate with official resources, projects 50h

    [FEASIBILITY] Please provide details of the people who will work on the project.

The Team will consist of me and and developers I have been working with previously for Cardano Smart Contracts and DApps.

I am trained computer scientist focusing on theory of computation and automatic verification of programs. I have already developed a prototype for the language. I have been part of a larger team that built a fairly large DApp on Cardano and already launched in 2021. I am further experienced in developing and maintaining high quality open source projects, which I aim this language to become!

The team behind MuesliSwap, the first DEX on Cardano, which has shown its skill in developing Smart Contracts and DApps will also support me. They offer technical as well as networking support through their connection to the Cardano DeFi Alliance. I have already received great amounts of Feedback from them and am looking forward to collaborate further.

I will also need support from a writer/marketing expert, that I will engage after the submission has been accepted.

Further, collaboration will existing DApps on both Cardano and Ethereum is planned, as well as contacting aspiring Cardano developers.

[FEASIBILITY] If you are funded, will you return to Catalyst in a later round for further funding? Please explain why / why not.

This proposal is aimed to fund the basic development of the Smart Contract language. Additional rounds will be needed to extend and maintain the code base. Submission of another proposal is planned for Funds from 2023 on, as detailed in the roadmap.

[AUDITABILITY] Please describe what you will measure to track your project's progress, and how will you measure these?

Of course the project will be fully open source. Progress on the project can be continously tracked by checking the number of commits in the main repository. Regular tweets will inform followers about the ongoing work.

Purely based on numbers, the progress of this project can be measured by two numbers:

One is the number of stars/forks/downloads of the github project of the language. This indicates the number of people that actively use the language for development. An aim would be to exceed the numbers of the Plutus source code, which has roughly 1.4k stars and only a few hundred downloads and rather reach something comparable to the Solidity language core, with 20k stars. I believe that this is possible, if the language is accessible enough.

The second number is the number of unique smart contracts deployed on Cardano. It is expected that this number will sharply increase with the onboarding of many more developers on the ecosystem. Right now the number is roughly in the 6 digit area and increasing every day. We may surely be able to push this to 7 digits!

[AUDITABILITY] What does success for this project look like?

Success means that developing a Smart Contract on Cardano is realistically and comfortably approachable in at least two ways:

Either by taking the Plutus pioneer program or by reading through a short tutorial on the imperative SC language.

However, the imperative language developed with this proposal will make it possible for Web3 developers to build on Cardano within weeks, instead of the months currently needed to learn Haskell. The security of the language is assured by solid and tested tools developed for similar imperative languages.

[AUDITABILITY] Please provide information on whether this proposal is a continuation of a previously funded project in Catalyst or an entirely new one.

This is a new proposal.

Community Reviews (1)

Comments

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