completed
OpShin Core - Developing Python Smart Contracts
Current Project Status
complete
Total
amount
Received
₳43,200
Total
amount
Requested
₳43,200
Total
Percentage
Received
100.00%
₳43,200 Received out of ₳43,200
Solution

By hiring a part time developer, the OpShin project can make progress in the desired pace such that it will truly enable onboarding of new developers into the ecosystem.

Problem

Writing Smart Contracts on Cardano in Plutus/Haskell is difficult. Alternatives like OpShin (Python) are not well funded and currently have no dedicated developers pushing the project forward.

Feasibility
Value for money
Impact / Alignment

Team

1 member

This proposal was approved and funded by the Cardano Community via Project F10: Developer Ecosystem - The Evolution Catalyst funding round.

[IMPACT] Please describe your proposed solution.

We’re ImperatorLang, and that’s why we built OpShin: a toolchain that lets developers construct Cardano smart contracts in Python. Why Python?

The problems of Haskell

Haskell is hard

As an exotic language, Haskell has very few people able to work on it, ranking only the 25th most used language on GitHub, with only 0.39% of the userbase actively using it. Very few people are proficient in Haskell, and even fewer can help you out with the peculiarities of PlutusTx: with how to implement smart contracts on Cardano.

Instead of building in the language you already know and use in everyday work and life, you have to learn a completely new language – and peer support for it is limited.

On-chain code doesn’t integrate smoothly with off-chain code

Whilst the on-chain part of a dApp handles the transactions on the blockchain, the off-chain part often handles the rest of the dApp. Developers are forced to use two completely separate tools, often in separate languages. This costs Focus - and introduces unnecessary friction at integration and potential security issues.

Instead of working on how to best solve a problem to serve your users’ needs, you’re pulling your hair trying to make the two halves of your dApp work together.

Smart Contract size is limited, and PlutusTx is hefty

Smart Contracts have tight constraints on size and execution steps. PlutusTx and other tools often translate type constraints to expensive and unnecessary on-chain transactions, limiting developers in the complexity of what they can build.

Instead of building the best solution possible, you’re hamstringing yourself just to make sure the most critical parts of your smart contract can be executed on the blockchain.

How OpShin frees you

The OpShin Toolchain comprises several projects that aim to facilitate the development of Smart Contracts and dApps on Cardano. They are largely based on Python, or integrate well with it for maximal accessibility.

Python has a wide and growing community

At the time of writing, Python is the second-most used language on GitHub, with 14.75% of the active userbase working with Python, and enjoys a 22.5% year-over-year increase in users; this is driven in part by its utility in data science and machine learning.

Image file

Everyone who knows Python can leverage the toolstack available for Python development to build on Cardano; and that is a lot of people, with a lot of tools.

OpShin natively integrates with Python Cardano tooling

Developers can build both off-chain and on-chain tooling in just Python, and are able to directly import definitions and functions that are defined in the on-chain contract, into their off-chain tooling. This reduces the friction that is naturally-induced by Cardano’s design when building combined tools.

Everyone who knows Python can develop fluently and without interruption, without the cost of constantly having to change gears and mindsets just to build dApps.

OpShin is light, fast, and maintains security

OpShin enforces strict typing on the high-level programming: it implements a type system on top of Python type hints. However, all traces of typing are erased during compilation, for a maximum efficiency program. OpShin beats many programming languages when taken to the test for real use-cases.

Everyone who knows Python can build a dApp that runs faster, costs their users less, and executes more.

How does OpShin perform?

Image file

How much does OpShin save?

Image file

Testimonials

“ImperatorLang makes smart contract development the easy part of dApp development. I have spent far longer on off-chain code than on implementing smart contracts.” - @while0x1, SPO

“My experience was very positive. As a python library, eopsin does well at performing as expected. It’s clear when things don’t work and the language is intuitive.” - Julius Frost, Full-time Python dev

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

The impact on Cardano is already huge - within 5 months of the initial release, 3 dApps have been released built on OpShin. We are expecting that this will grow even more with additional funds to foster the development of documentation, developer experience improvements and educational content.

We want to make sure that the code quality of OpShin will remain high and make sure that the Cardano ecosystem can grow with it. The benefit for the ecosystem will be a highly usable and efficient smart contract language, developed by an experienced and dedicated developer.

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

We intend to measure future success in terms of newly released features and usability enhancements in the OpShin programming language over the term of the 6 months. There are a number of larger features stalled that could be tackled with a dedicated developer.

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

The output of OpShin has and will continue to be shared continuously through

  • commits, PRs and issues on the OpShin Github repository

  • explanatory Tweets through the @OpShinDev twitter account

    [CAPABILITY/ FEASIBILITY] What is your capability to deliver your project with high levels of trust and accountability?

The main proposer, Niels, has already bootstrapped the main part of the project. In its current form the tool is able to be used and already being used. The proposer is completely doxed and well-known in the Community.

He also has a strong network of competent and experienced developers interested and capable in supporting the project.

[CAPABILITY/ FEASIBILITY] What are the main goals for the project and how will you validate if your approach is feasible?

The main goal of this proposal is to improve usability and developer experience with respect to Smart Contracts on Cardano. With the given funds, the continued development of the toolchain is secured as developers can be hired to tackle basic issues in the toolchain whereas the main proposer is able to allocate more time of the day towards developing OpShin himself.

[CAPABILITY/ FEASIBILITY] 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.

The roadmap of OpShin has a few key points that need to be tackled in the coming months:

  • Usability improvements: Developers should be able to perform basic operations for smart contracts easily, such as loading, deploying and interacting with them. Tooling for this (such as the support for Plutus Blueprints) is missing from OpShin and needs to be implemented
  • Optimizations: In order to stay a highly competitive language also in terms of performance, the OpShin toolchain needs optimizations. To assess their value, a proper benchmark for testing performance needs to be established as well.
  • Simulation: The Plutus VM needs to be fully implemented in Python in order to give full freedom and flexibility when developing in a Python stack on Cardano. The current implementation is lacking precision and testing as well as primitives that will be present in Plutus V3.

On top of this there are newly arising tasks and visibility challenges that are part of the usual efforts related to smart contract languages and can not easily be forseen. In order to be able to cover them adequatly, a dedicated developer is required.

[CAPABILITY/ FEASIBILITY] Please describe the deliverables, outputs and intended outcomes of each milestone.

  • Usability improvements: Support for Plutus Blueprints, for transaction building with OpShin support and better error reporting and logging

  • Optimizations: Configurable degrees of optimization in OpShin, Plython and UPLC (all part of the compilation stack)

  • Simulation: A fully typesafe and cost-measuring implementation of the Plutus VM in Python

    [RESOURCES & VALUE FOR MONEY] Please provide a detailed budget breakdown of the proposed work and resources.

The estimation is that the above milestones and general maintanance and representation of the OpShin language can be taken care of over 20 hours a week at a salary of 30 USD. Assuming a price of 0.3 $ per ADA over the course of 6 months of work this results in the total of 43200 ADA.

[RESOURCES & VALUE FOR MONEY] Who is in the project team and what are their roles?

Niels Mündler aka nielstron is well-known in the Cardano Community. He has co-founded the MuesliSwap DEX and gave birth to the programming language OpShin. His background is computer science at ETH Zurich, Switzerland.

In the OpShin team, he is taking over the role of Founder, CTO and CEO, running the whole thing as a one-man show.

He is supported by Julius Frost, Boston U graduate and working in the ML field, who created the opshin pioneer program and is a highly experienced Python developer. He is a frequent contributer and maintainer and helps assessing the quality of submitted issues and PRs.

[RESOURCES & VALUE FOR MONEY] How does the cost of the project represent value for money for the Cardano ecosystem?

Highly competent developers have their price. Instead of continuously funding a project with intransparent rules and spendings, this proposal will attract competent developers and reward them on a merit basis.

The cost is extremely low compared to the cost of Haskell developers, since Python developers are commonly employed for all kinds of positions and more easily available on the market. Still, we need to provide some compensation for their efforts to improve and maintain the code base of such a critical open source project.

Community Reviews (1)

Comments

Monthly Reports

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