filecoin-project / devgrants

👟 Apply for a Filecoin devgrant. Help build the Filecoin ecosystem!
Other
369 stars 307 forks source link

RFP Application: Solidity libraries for FEVM Smart Contracts (Phase 2) #1195

Closed ainhoa-a closed 6 months ago

ainhoa-a commented 1 year ago

RFP Proposal: Solidity libraries for FEVM Phase 2

Name of Project: Solidity libraries for FEVM Smart Contracts

Link to RFP: https://github.com/filecoin-project/devgrants/pull/1196

RFP Category: devtools-libraries

Proposer: ainhoa-a

Do you agree to open source all work you do on behalf of this RFP and dual-license under MIT and APACHE2 licenses?: Yes

Project Description

In the context of the FEVM Early Builder program we propose to build a set of tools and libraries to enable Ethereum developers to re-use their existing know-how to develop Filecoin-specific use cases.

After validating the research and benchmarking phase, it has been proposed to start the implementation of the actual libraries. This Solidity library is required in order to allow Solidity smart contracts to seamlessly call methods on Filecoin built-in actors, as well as to access Filecoin specific syscalls idiomatically.

Development Roadmap and Deliverables

Phase 1 - Research and Benchmarking (Completed)

Milestone 1 - Research and feasibility analysis of CBOR in Solidity in terms of FVM gas usage Milestone 2 - Research and PoC of Pre-compiles for specific built-in actors

*These Milestones have been completed and were part of a previous RFP

Phase 2 - Implementation of the Filecoin.sol libraries

Milestone 1 - Deep dive into built-in actors and implementation of an MVP

Technical Scope and Timeline

Week 1: Deep dive into built-in actors and Filecoin.mock.sol library

During the first week we will deep dive into built-in actors implementation https://github.com/filecoin-project/builtin-actors/ , and implement a mock.sol library with the scope to enable developers to start creating their first FEVM DApps. This mock version will not actually perform any cross-contract calls or syscalls. It will respond to specific scenarios. The ultimate goal is for devs to be able to replace imports of mocked libraries with the real one and have their contracts connected to the real protocol.

This phase will principally focus on the following actors:

Deliverable 1:

Week 2-3: MVP of the Filecoin.sol library

During these 2 weeks we will focus on implementing Solidity library containing the APIs present in the mock version, MarketAPI.sol and MinerAPI.sol. At this stage we will focus on functionality, and gas-consumption and optimizations will be considered in coming stages.

Deliverable 2:

Total Milestone estimated effort and delivery

Duration: 3 weeks (for both, deliverable 1 and deliverable 2)

Funding for this Milestone: 23.100,00- $

Milestone 2 - Reaching Feature completeness

Technical Scope and Timeline

During this Milestone we will complete the implementation of all remaining methods and built-in actors marked as “export” and that are ready to be integrated within the library. We will provide short solidity documentation as we keep integrating APIs. As we build the library we will test real-world smart contracts with the actual filecoin.sol, to evaluate the gas-cost properties and whether they fit into the size limit of 24kB.

We will provide frequent updates and releases on a weekly basis. The aim of this Milestone consists of having the code ready for auditing.

Deliverables

Total Milestone estimated effort and delivery

Duration: 5 weeks Delivery plan: We plan to deliver this work incrementally, with releases on a weekly basis. Final delivery is planned for early January. Funding for this Milestone: 33’000.00 $

Milestone 3 - Getting ready for official release: improvements and optimizations

Technical Scope and Timeline

During this milestone we will keep optimizing the library, and making improvements as we receive feedback from external security audits, fvm core team and developers. We will also complete documentation of the library, and add additional methods that were not were not ready to be exported at an earlier stage. The scope of this milestone includes:

Total Milestone estimated effort and delivery

Duration: 3 weeks Estimated Delivery: Late January/Early Feb Funding for this Milestone: 19’800.00 $

Milestone Summary

Milestone No. Milestone Summary & Staffing Funding Estimated Timeframe
1 Deep dive into built-in actors and implementation of an MVP 23.100,00 $ Early December 2022
2 Reaching Feature completeness 33.000,00 $ Early January 20223
3 Getting ready for official release: improvements and optimizations 19.800,00 $ Late January/Early Feb 2023

Total Budget Requested

Total: 75.900,00- $

Team

We will allocate 2 x Sr. engineers that will be available full time to work on this project. Additionally, we will have another engineer that will be available if needed to support them, in order to meet delivery times. A project manager will be assigned to make sure deliveries are met on time and quality.

2 x Sr. Developer 1 x Software Developer Project Management

Notes

Security Audit Request: This work does not involve a security assessment/audit in any of the milestones, whether that is cryptographic analysis, workflows, etc. We expect the client to commission and fund an adequate security audit before releasing this to the general public.

License: Source code will be delivered as under Apache 2.0.

Contact Info

This has been shared per Email.

Team Website

https://zondax.ch/

Relevant Experience

We have taken par of the FVM Early Builders program and recently delivered an SDK for FVM in Assmblyscript, and previous research work for FEVm and precompiles.

We have been collaborating with PL for several years and have/or are currently contributing to the following projects: Signing Tools (WASM/Typescript and FFI support, Secp256k1 and BLS support) Filecoin Indexing, Filecoin GPU Scheduler, Exchanges & Custodian technical support among others.

Team code repositories

https://github.com/Zondax/

BlocksOnAChain commented 1 year ago

@ainhoa-a just wanted more information on the "Security Audit Request" part of the RFP - we will audit this in January. Still, will the library be available for usage on our testnets even before, as we agreed? Since the "general public" phrasing can indicate many things.

ainhoa-a commented 1 year ago

Hi @BlocksOnAChain yes it will be available before for testing, as a "beta-non audited version"

maciejwitowski commented 1 year ago

This is a solid proposal, thank you! I approve it. cc @realChainLife

BlocksOnAChain commented 1 year ago

Looks good to me, we can approve this RFP @realChainLife

ErinOCon commented 1 year ago

Thanks, @maciejwitowski and @BlocksOnAChain!

@ainhoa-a, we will circle back as soon as our final review complete. Many thanks!

maciejwitowski commented 1 year ago

Can you prepare a short report covering all deliverables from the Milestones 1 and 2, ideally with a link to a code/docs addressing each point? This would make it much easier to review. Thanks!

maciejwitowski commented 1 year ago

For completeness: I approved M.1 and M.2 deliverables ✅

BlocksOnAChain commented 1 year ago

@ErinOCon @realChainLife - As we agreed in our email threads, this project is now completed and this issue should be closed now.