completed
Open source PoolTool.io and sustain for 1 year
Current Project Status
Complete
Amount
Received
₳70,000
Amount
Requested
₳75,000
Percentage
Received
93.33%
Solution

Much of the technology we have developed would be useful to other developers in the ecosystem. And making it open source the community can build features on top of pooltool more easily

Problem

Three essential objectives: open-sourcing all components of the PoolTool platform, eliminating ads ,and funding operations for a year.

Feasibility
Value for money
Impact / Alignment

Team

1 member

Open source PoolTool.io and sustain for 1 year

Please describe your proposed solution.

The pooltool platform includes the following innovative tools:

  1. A stakeholder authentication system developed in Kotlin
  2. Reward calculation algorithms scripted in Python
  3. Memoryless ledger state parsing in Python
  4. The PoolTool Telegram Bot crafted in Python
  5. PoolTool's mobile app compatible with both iOS and Android, developed in Dart
  6. A data-driven ranking and statistical system in Python
  7. The dynamic PoolTool.io website created in Vue
  8. PoolTool's live stake chain indexing and processing

Our unique approach to many of these challenges will provide a useful template for others. In addition it will allow a broader set of the community to contribute and extend the capabilities of pooltool.

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

The challenge is to support effective and impactful projects and initiatives to build and support the SPO Ecosystem and Community. PoolTool has already been instrumental in this providing a centralized GUI for pool operators to monitor pool performance and status. However opening up the source code will provide examples and more importantly a framework for others to contribute their ideas to expand on our rich user interface

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

As we embark on open source perhaps one of the best metrics will be the number of forks of the pooltool assets. I'm confident that our live stake processing and reward processing along with the memoryless ledger state processing are highly coveted by many in the community and will see immediate uptake. ,

But an even more exciting opportunity is around expansion of the metrics we collect as part of the block submissions. We have already tossed around ideas to collect more extensive information.

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

Within one month of approval we will move everything to a public repository and invite developers to view and contribute to the platform. The month will be used to add a reasonable level of documentation to the platform to make it easier to understand and replicate.

What is your capability to deliver your project with high levels of trust and accountability?

We own all this technology and it has been developed over the years. Aside from some cleanup required to document aspect of what we have done, the code is ready to deploy.

Running and maintining the infrastructure for a year is what we have been doing so far. Mike has been handling all the website requirements and Leon has been handling the pooltool app project for both android and IOS. Both resources are avaliable to continue to work on this project.

What are the main goals for the project and how will you validate if your approach is feasible?

The goal is to give the project back to the community and as mentioned above I will consider this to be a success if we start to see other projects using our technology or building on the pooltool platform.

We will be looking for 50+ forks of the pooltool github repository.

For the sustaining aspect of this proposal we would probably need to have an SLA to measure our uptime. Thus far we have not put that type of infrastructure in place. Pooltool uptime (meaning on tip) has been excellent over the last two years and I don't expect anything to change there once its sustained by the community. However, if necessary we could commit to an SLA of 95% uptime. (meaning on tip within 10 blocks of the tip (normally we target 6))

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.

All code will be transferred to public repositories within 1 month of project approval by Catalyst

Platform will continue to be operational on mainnet for one year after catalyst funds approved.

Due to the ongoing sustaining nature of the project its probably easiest to split each month into a separate milesone.

Milestone 1: Month 1 - code release and first month of sustaining

Milestone 2: Month 2 - 2nd month of sustaining

Milestone 3: Month 3 - 3rd month of sustaining

Milestone 4: Month 4 - 4th month of sustaining

Milestone 5: Month 5 - 5th month of sustaining

Milestone 6: Month 6 - 6th month of sustaining

Milestone 7: Month 7 - 7th month of sustaining

Milestone 8: Month 8 - 8th month of sustaining

Milestone 9: Month 9 - 9th month of sustaining

Milestone 10: Month 10 - 10th month of sustaining

Milestone 11: Month 11 - 11th month of sustaining

Milestone 12: Month 12 - 12th month of sustaining

Please describe the deliverables, outputs and intended outcomes of each milestone.

Milestone 1: All pooltool source code will be released to a public repository on github. deliverables are outlined above.. In addition, Pooltool will continue to be operational

Milestone 2 through Milesone 12: Pooltool will continue to be operational and maintained on the latest node release.

Please provide a detailed budget breakdown of the proposed work and resources.

Our labor rates are normally $150 per hour for engineering labor, but for PoolTool we will reduce this to $100 per hour in the hopes that ADA appreciates and/or because we value the community and this project.

Sustaining PoolTool consists of three aspects.

1) firebase storage and delivery - Currently $350 per month, targeting $250 per month

2) AWS EC2, API, Dynamo DB, Lambdas - Currently $850 per month, expecting $750 per month

3) Ongoing node upgrades and maintenance and support - 5 hours per month

We already have some active effort in place to cost reduce the platform as outlined. This will be completed well before Fund 10 finishes. I'm not listing this as a dependency because if we are unable to reduce the monthly costs to $1000 for servers we will cover the difference.

With the current ADA exchange rates this works out to 3333 ADA per month for servers and 1666 ADA per month for maintenance labor. For a total of 5000 ADA per month. This work will primarily be handled by Mike but the apps require a little effort occasionally as well so I'd expect Leon to be involved. 5000 * 12 = 60000 ADA

We have also allocated 1 month to push the repository to open source. We could do this without any effort but there is some documentation and cleanup we should to to make it easier for others to build and extend our codebase. We have allocated 45 hours to do this work between Mike and Leon. At an rate of just over 333 ADA /Hour this works out to 15,000 ADA.

Who is in the project team and what are their roles?

Mike - PoolTool website and backend(python) and infrastructure development. Mike will handle basically everything except the pooltool ios apps.

Leon - The pooltool app has been maintained by Leon for the last year and I'd expect some documentation to be completed as part of this and a little maintenance of the apps over the next year.

How does the cost of the project represent value for money for the Cardano ecosystem?

Given the years of contributions to the community and the tools developed, 75,000 ADA to both fund the platform for a year and get it ready for open source should prove highly beneficial to the community.

I'd estimate that the reward processing alone represents 2 months of effort for an engineer over the years when you consider the reverse engineering of the haskell code, and the methodologies to extract the necessary parameters from the node (note, not all information is avaliable in db-sync to perform these calculations)

On the ongoing server costs I could probably break down some additional detail:

  1. Firebase is a fantastic platform that provides realtime data to our apps and website. While firebase is known to be a little expensive, it eloquently solves the problem of realtime updates for an application like poolTools where realtime data visualization is important. The current cost of $350 per month consists of $200 for realtime data and $150 for database storage. Our current effort is to eliminate storage of unnecessary data to reduce storage size down drastically.
  2. On AWS we also have some challenges. Due to the ledger state processing once per epoch our server had to be oversized resulting in server costs of around $200 per month. In addition the database has grown to well over 300G with all the reward history resulting in 800G drive and around $160 per month in storage costs. Due to the memory less ledger state processing we are able to reduce the AWS instance size drastically and we are in the process of moving the historical reward data (for all stake keys) to S3 where it can be stored more efficiently.
  3. Also on AWS is the API gateway at around $200 per month. Our API handles around 50 Million requests per month. These api calls are fed through Lambdas into a dynamo db instance (due to speed) from which we summarize all the block propogation delays. In total the API side of pooltool which handles block reporting costs around $300 per month.
  4. The remainder of the costs are small such as S3, data transfer costs, route 53, etc.

With the fund denominated in ADA there is risk associated with exchange rates since our server costs will be USD denominated.

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