Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cadence Standard Library Wishlist Grant #179

Closed
j1010001 opened this issue May 3, 2023 · 5 comments
Closed

Cadence Standard Library Wishlist Grant #179

j1010001 opened this issue May 3, 2023 · 5 comments

Comments

@j1010001
Copy link
Member

j1010001 commented May 3, 2023

Overview

This grant proposes tasks related to the Cadence Standard Library, which extend its functionality and are ordered in increasing difficulty / effort.

Problem

The Standard Library of Cadence is currently relatively small and only offers essential features. However, it is still missing some essential and useful functionality. This has led to the community creating smart contracts that provide some of the missing functionality.

Providing such functionality as directly in Cadence as built-ins has several advantages over implementing them in smart contracts:

  • Their implementations can be trusted, as they are part of the “protocol”
  • Built-in functions can make use of generics, which allows providing functions that are more type safe
  • Functions can be implemented natively, which is more performant

This grant is structured specifically to enable and encourage new Flow contributors to progressively demonstrate their skills and abilities by working through a diverse range of problems with an increasing level of challenge. Each task has a discrete grant award for completion, providing that all technical standards and quality expectations have been met. Issue-specific expectations are defined within issue descriptions, however, the general expectation for all items will be:

  • The requirements and acceptance criteria defined within each issue have been met.
  • Unit and integration tests provide a healthy level of coverage and pass.
  • Code is clean, well factored and follows Flow coding conventions, best-practices and are supported as needed with thoughtful comments.

Solution

Please see each respective issue for a detailed description, requirements and acceptance criteria.

Requirements

The community developer selected for this grant must submit each fix PR individually in the prescribed order below. This is to ensure work quality as the challenge increases and that contributions meet engineering and quality expectations for Flow. Through this process we can guide and support you and enable you to demonstrate a broader range of problem solving skills. Contributors who consistently meet the expected engineering quality expectations through the course of this grant will be invited to take on larger, more challenging, and rewarding grants for Flow.

Deliverables & Milestones

Milestone Timeline USD proposal
onflow/cadence#2154 TBD TBD
onflow/cadence#2448 TBD TBD
onflow/cadence#2389 TBD TBD
onflow/cadence#564 TBD TDB
onflow/cadence#2482 TBD TDB

Team Qualifications

If you or your group are interested in proceeding with the above, the process to submit a proposal is as follows:

  1. Prepare effort estimates per Github issue above.
    1. For larger issues It is recommended to add subtask breakdown and corresponding subtask estimates. You should provide relevant details when splitting out sub-tasks in a supporting document when submitting your proposal. Once accepted this information can be used to create the corresponding new Github sub-tasks under the relevant issue.
    2. Make sure the proposal includes sufficient detail for the reviewers to understand the work involved and the definition of done.
    3. The submitted proposal should group work into logical milestones indicating which tasks will be delivered and the total USD reward to be paid on completion of that milestone.
  2. Submit your grant proposal by commenting on this issue, or contacting the author on Discord (Jan.#6550).
  3. We will review the proposal and there may be some back and forth iteration to help us understand work specifics and adjust as needed in the event of mis-understandings or other issues that need addressing
  4. Once the grant proposal has been accepted you will be notified and we will request additional information for a signed agreement confirming our commitment to rewards to be paid per each milestone proposed .
@darkdrag00nv2
Copy link

Hi! I would like to apply for this developer grant.

Deliverables & Milestones

Milestone Sub-Task Timeline (Hours) USD proposal
1 - Conversion Functions 20h $1000
onflow/cadence#2154 fromString for Number/Address 10h $500
onflow/cadence#2448 fromBigEndianBytesfor Number 10h $500
2 - Overflow Arithmetic - onflow/cadence#2389 15h $750
Implement Word128 & Word256 15h $750
3 - Check on AuthAccount storage path - onflow/cadence#564 20h $1000
4 - Range in for loop - onflow/cadence#2482 20h $1000
Define Range<T: Integer> type 10h $500
Support looping in for-in 10h $500

Additional Points

  • Fixed point number types already support fromString
  • Need a bit more clarity on Return overflowing value when multiplying for UInt256 and Int256  cadence#2389. I'll be able to better estimate the work needed after receiving the answers to my questions. Added a best effort estimate for now.
  • For the check function, I'll use the existing check function as a reference
  • The support for looping a Range will be done via an Iterator interface similar to Array.

The figures above are my estimates and I am very open to discussing them if needed.

About Me

I'm a Software Engineer with ~5 years of technical experience.
My primary skills include C++, C, Rust & TypeScript. Recently picked up Go & Scala. I have the past experience of implementing an interpreter for a DSL.

I am a new but an active contributor to Cadence and have contributed to a few standard library related issues. Working on this grant would help solidify my understanding of Cadence & the Flow blockchain.

I have also made some contributions to the interpreter for the smart contract language of the Ergo blockchain.

Email: darkdrag00n@proton.me
Discord: darkdrag00n#6796

Links

@j1010001
Copy link
Member Author

j1010001 commented May 8, 2023

This proposal has now been accepted

@darkdrag00nv2
Copy link

@j1010001 Just an update
Milestone 1, 2 & 3 are done now ✔️
Final milestone 4 is in progress

@j1010001
Copy link
Member Author

j1010001 commented Jan 4, 2024

We can consider the grant as done, remaining is to merge the feature/range-type branch to master (to be done by the repo owners)

@Aliserag
Copy link

Aliserag commented Dec 6, 2024

Closing this!

@Aliserag Aliserag closed this as completed Dec 6, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants