Skip to main content

ink!/pallet/solidity performance benchmarking phase 2

  • Team Name: Talentica Software
  • Payment Address: 0x8bd54ec34A35f3A2f668A33d9578b5C3A6b730dE
  • Level: 1

Project Overview :

Proposal for Milestone 2 in the RFP titled implementation-benchmarking.

Overview

There are multiple ways to implement the logic in substrate i.e using pallets or ink smart contracts, or even writing solidity code and compiling it to WASM with the help of a solang compiler. We have to benchmark the performance metrics of the logic implemented using each of the above methods. We have already benchmarked the storage performance(basic data types) of each of the implementations as part of Milestone 1 and 2. Now, we will benchmark CPU-intensive logic, events emission and cross-contract calls across all the four implementations. We hope this will help new developers in deciding the best approach to implement the logic.

Project Details

We will employ the approach already taken to deliver Milestones 1 and 2 to benchmark CPU intensive task on all the four implementation strategies and also cross-contract calls within an implementation, wherever possible. We will use following tools to do so:

Ecosystem Fit

This will help new developers to decide the best tool to implement the logic.

Team 👥

Team members

Contact

  • Registered Address: Talentica Software Inc., 6200, Stoneridge Mall Road, Pleasanton, California 94588, USA.
  • Registered Legal Entity: Talentica Software Inc.

Team's experience

We have already worked on implementation-benchmarking and delivered Milestones 1 and 2.

Team Code Repos

Team LinkedIn Profiles (if available)

Development Status :

We have come up with a high-level implementation plan and will start implementing it soon.

Development Roadmap 🔩

NumberObjectiveDeliverableTime Estimate
1.Milestone 3, Deliverable 12 days
2.Milestone 3, Deliverable 22 days
3.Milestone 3, Deliverable 31 day
4.Milestone 3, Deliverable 42 days
5.Milestone 3, Deliverable 53 days
6.Milestone 3, Deliverable 63 day
7.Milestone 3, Deliverable 73 days
8.Milestone 3, Deliverable 83 days
9.Milestone 3, Deliverable 91 days
10.Milestone 3, Deliverable 101 days
11.Milestone 3, Deliverable 111 days
12.Milestone 3, Deliverable 121 days
13.Milestone 3, Deliverable 0b, 0e1 day

Overview

  • Total Estimated Duration: 5 Weeks
  • Full-Time Equivalent (FTE): 1
  • Total Costs: 6,000 DAI

Milestone 3 - Compute intensive function and cross-contract call benchmarking

  • Estimated duration: 5 Weeks
  • FTE: 1
  • Costs: 6,000 DAI

The default deliverables 0a-0d below are mandatory for all milestones, and deliverable 0e at least for the last one.

NumberDeliverableSpecification
0a.LicenseApache 2.0 / GPLv3 / MIT / Unlicense
0b.DocumentationWe will provide both inline documentation of the code and and an article explaining how to use the tool to benchmark custom compute intensive functions and cross-contract calls along with a live demo if possible.
0c.Testing and Testing GuideWe are building atop of the benchmarking framework that's part of the substrate-core. Some tests may be included when it comes to the functions being tested.
0d.DockerNot Applicable.
0e.ArticleWe will publish an article that explains how each implementation technique performs, and when to choose which.
1.Pallet CPU-intensive extrinsicExtend a sample pallet to include a CPU-intensive extrinsic.
2.Ink! CPU-intensive functionExtend a sample Ink! contract to include a CPU-intensive function.
3.Solidity-WASM and Solidity-Native CPU-intensive functionExtend a sample Solidity contract to include a CPU-intensive function
4.CPU-intensive benchmarksRun the benchmarks on all these implementations and compare.
5.Pallet cross-contract callAdd another pallet and invoke it from the sample pallet.
6.Ink! cross-contract callAdd another Ink! contract and invoke it from the sample Ink! contract.
7.cross-contract benchmarksrun cross-contract calls across different implementations and collect benchmarks.
8.Solidity-WASM and Solidity-Native cross-contract callAdd another Solidity contract and invoke it from the sample Solidity contract. (Note: There are unresolved issues questioning the feasibility of cross-contract calls in Solidity-WASM and Solidity-Native. Nevertheless, an attempt will be made to see if it's possible.
9.Pallet eventsbenchmark events emitted from the sample pallet.
10.Ink! eventsbenchmark events emitted from the sample Ink! contract.
11.Solidity-WASM and Solidity-Native eventsbenchmark events emitted from the Solidity-WASM and Solidity-Native contracts.
12.Benchmark events across implementationsbenchmark and record events emission across implementations.

We are planning to submit another grant application towards Milestone 4 where we discuss our approach to maintaining this work, using some software tools to automate the process wherever possible.

Additional Information

Gautam Dhameja told us about the Grants program and encouraged us to apply to the same. We have already applied for and delivered Milestones 1 and 2 against implementation-benchmarking