Secret Feature: Fadroma
Fadroma introduces core workflows for smart contract development and deployment on Secret Network and other Cosmos-based platforms!
Greetings Secret community! Today we're excited to feature exciting new tooling for Secret App developers. This post is a bit heavy on technical details, but we hope this is a great overview for prospective devs and curious community members. Read to the end for more details on grant opportunities!
One of the core problems developers face is tooling surrounding smart contract development and deployment. Without proper tooling, this process can be tedious and intimidating for both new and experienced developers.
Fadroma (built by hack.bg) introduces core workflows for smart contract development and deployment on Cosmos-based platforms, specifically Secret Network! Fadroma helps developers avoid platform specific boilerplate code - automating the repetitive workflow steps by providing essential smart contract building blocks that empower developers to both maintain high development velocity and deliver a reliable product.
Fadroma is currently being developed as an in-house framework facilitating the Sienna Network project. In order to bring Fadroma to a larger developer audience, development hours are being dedicated to improving test coverage, documentation, stabilizing APIs, and ensuring compatibility with a wide range of use cases and underlying platforms.
The following is the list of some of the important initial feature of Fadroma - creating a unique and fluid development experience.
Fadroma Prelude - reexport of platform libraries, with added types for frequently used building blocks:
ContractLink, a data type that contains a contract address and code hash
Canonize- traits to convert structures that contain
CanonicalAddrequivalent and vice versa
Permitviewing key and permit with custom permissions
Uint256- 256-bit equivalents of the CosmWasm numeric types, etc.
Fadroma Derive: a derive macro that generates boilerplate code like message definitions and dispatch init/handle/query functions, as well as wasm32 entry points - empowering contract creation out of separate subsystems.
Fadroma Components - implementations of frequently used smart contract functionality:
- Fadroma Admin: TX sender-based admin auth
- Fadroma VK: viewing key-based auth
- Fadroma Permit: query permit-based auth
- Fadroma Killswitch: pause or permanently disable contracts
- Fadroma Token: A SNIP-20 implementation forked from the reference implementation and rebuilt as a trait.
- This allows individual token contract functions to be overriden without having to copy the entire codebase.
- Furthermore, it enables token functionality to be added to service contracts, obviating the need for a separate contract to represent the service token.
Fadroma Ensemble: fast integration testing of multiple smart contracts in Rust by mocking the CosmWasm API - useful for testing application logic when it is distributed among several contracts.and having them run instantaneously during development.
Fadroma Ops: Node.js-based operations framework for managing the smart contract lifecycle. Provides a rich vocabulary of classes for modeling your smart contract deployment workflow.
- Fadroma Build: compile smart contracts from the working tree or a past point in Git history.
- Fadroma Localnet: run a localnet for development,
- Fadroma Receipts: keep track of uploads and instantiations. It is possible to update an existing deployment by specfying its id from the receipts and adding additional instances or executing messages all from code.
- Fadroma Schema: generate TypeScript definitions from the JSON Schema exported by contracts.
- Fadroma Bundle: Execute multiple messages in a single transaction, or generate an unsigned transaction for manual multi-signing.
- 100% test coverage
- Docker Compose integration for a portable development environment based on familiar tools.
Fadroma CLI: Command-line entrypoint for creating new projects and running default and custom management commands.
- (init) Start a project
- (add) Add contracts to it
- (compile) Compile them
While the above features are excellent, the Fadroma team has even more ideas for making this toolset even more powerful. Below are some of the features and goals to continue to improve Fadroma:
- Visualize dependencies between contracts.
- Automatically generate microfrontends from smart contract schema, to let you easily construct management dashboards and product UIs.
- Generate and browse documentation of your project and its dependencies.
- Explore blockchain activity.
Advanced testing tools for your smart contracts:
- WASM-FFI integration for testing production-ready smart contract builds.
- BDD support to allow non-programmers to specify test cases using a Cucumber-like language and reusable test steps generated from the contract schema.
- Fuzzing, property-based testing, eventually formal validation.
- View test results and coverage reports in a friendly Web UI.
- See the full roadmap on GitHub!
The release of Fadroma follows our reveal of Shockwave in early January of 2022. With more products and tools being built, more creators launching on Secret Network, and more supporters and partners than ever helping to ensure our global growth, the future has never been brighter for Web3 privacy.
If you’re a developer, you can also read through our latest announcements re: the new $225M Secret Ecosystem Fund, which contain details on how to connect with the SCRT Labs team and the rest of our developer ecosystem. Additionally, check out Secret Network grants and get started building today!
If you’re anyone who is passionate about ensuring Web3 users have the data privacy protections they need and deserve, become a Secret Agent. It is our mission to make sure the decentralized web we’re building is one that truly empowers - and one that is accessible to all.
Thank you for your support - the Shockwave is just starting! 🤫