Deploying Cardano infrastructure, setting up a node, configuring a pool, or connecting db-sync is a complex process requiring certain preparation and studying documentation. CFD solves these problems.
I've already started (but not finished) a pure bash tool, which allows anyone to set up, manage Cardano software, configure and maintain a staking pool without a headache. Links are below.
This is the total amount allocated to [CFD] - Cardano Fast Deployment tool. Setup and manage your infrastracture like a charm!.
-
No dependencies.
Project will be fully open source.
TL;DR; You can find everything (including video demonstrations) at this link - https://github.com/Fell-x27/cfd.
Cardano Fast Deploy tool
Why?
As a developer and SPO, I believe that the key issue we face is the convenient and rapid deployment of software. The same applies to updates that affect the structure of configuration files and the software itself. Version switching, migrations, linking software together, maintaining infrastructure convenience, the lack of unified standards, and "best practices" concerning software management are all challenges.
As a developer and SPO (starting from Cardano ITN...), I've journeyed through a path laden with custom scripts, micro-automations, fail-safe systems, and so on. My directory and file configuration changed several times in attempts to find a more optimal placement/management method. For instance, being able to switch software versions by altering a couple of symlinks and not touching the content of the service-unit that launches the software.
The tasks increased. More servers, more networks. We have one mainnet and several testnets. On one server, I'm running three test networks; it's essential not to mix their software, keys, certificates...
The result was research aimed at developing the CFD - Cardano Fast Deployment tool.
How?
The main idea was to write a toolkit that would allow anyone to deploy and link any Cardano software. Even for a person who is hardly familiar with this project. Maximum automation of everything with minimal user effort. If you don't count opening a Linux terminal as an effort.
A secondary task was simplicity of use, absence of dependencies, and a focus on pure bash and software that is included in most Linux distributions by default.
The project is guided by simplicity and accessibility, intuitiveness, self-documenting UI, the presence of built-in mechanisms for tracking incorrect use scenarios, and wide capabilities.
So that, on the one hand, for example, it would be possible to create and register a staking pool from scratch in a matter of seconds, and, on the other hand, to have the ability to manage its keys, certificates and related operations separately.
Automation should cover everything possible, from sending transactions to interactive merging of configuration files if something has changed in them, but with preserving user parameters, if any.
At the same time, there should be a single entry point and logical transitions to subcategories for all scenarios.
When?
Right now. CFD is not just a concept. It's an existing, actively developing project.
Right now, CFD serves all the infrastructure of the Medusa Wallet, test servers, local development environments.
Right now, you can download CFD and deploy/configure Cardano software with one command. By the way, there are no deployment or configuration commands. There is a "launch" command. Just launch the desired software, and CFD will ensure it's installed and configured correctly. CFD will download executables, configs, distribute them to directories, create symlinks, and launch whatever you need in 100% automatic mode.
Of course, you can influence how CFD works. You will get your own configuration file where you can even add your own software and additional networks. Everything is customizable if you wish.
What CFD can do already:
1) Automatic software version control;
2) Automatic installation;
3) Automatic downloading of configs;
4) Automatic dependency control - CFD can even help you set up PostgreSQL for working with db-sync if needed!
5) Semi-interactive automatic merging of configs, if needed;
6) Automatic creation of pool keys;
7) Automatic registration/deregistration of the stake key;
8) Automatic pool registration;
9) Full automation of the pool creation and registration process, if needed (pool-setup-wizard);
10) Automation of the pool retirement process;
11) Automation of the pool parameter update process;
12) Automation of creating and updating KES keys, considering the changing counter rules;
13) Capability to create/restore a mnemonic wallet (1 address, console wallet standard);
14) Automation of transaction work - commission calculation, signing, and even built-in UTxO-chaining for your convenience;
15) A smart wrapper over Cardano CLI, freeing you from the need to remember and type --network-magic and CARDANO_NODE_SOCKET_PATH, or even know about them;
16) Smart usage scenario control - for example, you can't launch an unconfigured pool or register it with a partially synchronized node;
17) CFD prevents your mistakes, rather than just reporting the consequences :)
18) It can also be integrated with systemd, as it operates not only in interactive mode but also in direct call mode;
Let's see some demonstrations:
https://youtu.be/n8_4dHYVj9Qhttps://youtu.be/p61-tGlw4yAhttps://youtu.be/uLYUuwUMIkQhttps://youtu.be/-O60eaw47MEhttps://youtu.be/2Y6QQeY86Bghttps://youtu.be/-9UT7WjLNS4Alright, but what are you asking for money for?
CFD is not yet finished. It needs to do more.
One of the problems related to Cardano software is a lack of memory if we need to deploy, say, cardano-node and cardano-db-sync together. Just db-sync (in conjunction with postgresql) requires a minimum of 32 gigabytes of RAM on the mainnet. Minimum.
At Medusa Wallet, we found a solution related to dividing Cardano software onto different servers and connecting them through a socket broadcast over the Internet. This way, we can save on servers without losing convenience. For this, an entire suite of auxiliary scripts was written to service remote sockets, recreate them if the connection is lost, switch them between servers, etc.
This mechanism is quite complex and, so far, is not integrated into CFD. But it's planned.
Also, we have our own system for validating node synchronization with the network and detecting forks - Tipchecker. It's a hivemind network that allows its participants to clearly understand whether their node is stuck and if it's time to restart it. This idea was born back in ITN times and has since served many SPOs faithfully and is part of failover software and alarm systems.
It can work together with CFD if needed but is not integrated into it. That's also in the plans.
There are also points related to automating the registration of Cardano software as services in systemd - this is also not yet available. But it would be great if it was, with a convenient dashboard and the ability to manage directly from CFD.
We'd also like to add more wallet-related operations - arbitrary transactions, reward withdrawal. Maybe even multi-address functionality (though it would work quite slowly).
Do you want to use CFD solely as a tool for software management? If so, the software management option will be available onboard.
And of course, if you have any wishes, they can also be implemented! If they are feasible.
Plus, part of the sum is compensation for the efforts and time already spent on development.
For beginners, CFD will lower the entry threshold into the Cardano ecosystem, increase accessibility, and allow users to get acquainted with Cardano without preliminary reading tons of documentation and nuances. It enables learning the platform practically, without spending hours dealing with subtleties.
For experienced users and SPOs, CFD will simplify the mechanics of software deployment and updates, as well as the processes of setting up and managing a working environment.
For third-party developers, CFD will ease the process of integrating Cardano into their projects, as it will take on a huge volume of work and save a lot of time.
All metrics are available on Github. The number of commits, the number of stars, the number of forks, all activity. As of writing, the project, in its current form, or, more precisely, its publication, is only a week old. A raw version of it was published back in March, but what it is now is a completely different thing.
The growth of these metrics will be an indicator of success. The appearance of issues (hopefully, with suggestions, not just bug reports), the appearance of third-party pull requests. Recognition of the toolkit. The increase in the number of delegates to the MDS pool, as an indication of the desire to support our activities.
It's open source. Everything can be found on GitHub :)
With 15 years of experience in software development, including a focus on the Cardano ecosystem for the last 5 years, I've been involved in a variety of roles. These range from teaching programming and blockchain concepts, contributing as a member of the Cardano Operator's Guild, developing the Medusa Wallet, to serving as a Cardano ambassador.
CFD is a 100% open-source project, which is already working and satisfying most needs, not just a promise or plans. The work done certainly won't be undone and, I believe, is sufficient proof of my qualifications.
The main goal is to complete the development considering the above-mentioned plans and release a full public version of CFD that solves most of the problems faced by people who administer Cardano software.
CFD is already functional, the task now is just to make it better and more powerful
:)
There's not much work left to divide it into milestones. Give me a month and a half and the motivation to finish what has been started, the result will not be long in coming. The implemented part of CFD is already "production ready", if it comes to that. It only remains to add advanced functionality. But nothing that I haven't encountered before.
Everything is here - CLICK;
The requested fund is 30,000 ADA, which is approximately $9000:
$6000 - as compensation for the work already done;
$3000 - for the upcoming work.
Why $3000?
1.5-2 months of a qualified specialist's work typically costs more than $1500, but I won't be spending full days on this.
Also, the upcoming work will be based on previously conducted complex research and initially proprietary technical solutions, which will subsequently be published for everyone.
Please note, this is not a 'fee for revealing the source code' or 'licensing.' All the source code is already open and available. The project is production-ready and can be utilized immediately even at this stage.
This funding serves as both a positive reinforcement from the community, and a kind of endorsement that helps to keep my motivation high and continue developing.
1.5-2 months of a qualified specialist's work typically costs more than $1500, but I won't be spending full days on this.
Let's put it this way, I believe that the CFD for $9000 will provide far more benefit to the ecosystem than a hypothetical "Turbo Daedalus" costing over $700,000...
Me, Denis "Fel-x27" Kalinin - the developer.