Please describe your proposed solution.
- The eventual goal of Scarab is to provide an alternative block-producing node implementation to improve upon the decentralization and security of the Cardano network. As noted in SoK: A Stratified Approach to Blockchain Decentralization, a network's resilience to implementation bugs and maintainer malfeasance is reduced when there exists only a limited number of full block-producing node implementations.
- Scarab does not seek to replace the Haskell cardano-node implementation or to fork the Cardano network, but rather to be a compatible and complementary alternative for stake-pool operators and enterprise organizations. Additionally, development of such a block-producing node would necessitate community-led specifications of functionalities (CIPs) and provide further insight regarding the implementation details within the application.
- As a first step to a block-producing node this work proposes creation of a client node, written in functional Scala, that can interact with network peers via the node-to-node protocols and users via the node-to-client protocols, maintain and extend the block history via bootstrapping and block validation, and update ledger state via transaction execution throughout each era.
- Such a node will be able to act as a backend for user wallets and be capable of being bundled with complex off-chain applications that benefit from direct exposure to the blockchain state.
How does your proposed solution address the challenge and what benefits will this bring to the Cardano ecosystem?
- Development of a Scala-based client node would directly address the “Development & Infrastructure” challenge in several ways:
- Alternative node benefits
- Increase overall decentralization of the Cardano network by developing an open-source node application independent of IOG.
- Provide a route for community-led development of a complete set of formal, language agnostic specifications to facilitate interoperability between Scarab, cardano-node, and other applications / libraries.
- Explore innovation on the design of node sub-systems such as storage.
- Functional Scala benefits
- Offers high concurrency, scalability, performance, robust static typing, and expressive syntax.
- Part of a mature JVM ecosystem with extensive libraries, IDEs, debuggers, and opens up a vast pool of resources, tools, and developers.
- Interoperability with JVM languages like Java, Kotlin, and Clojure increases its accessibility for node integrations and enterprise adoption.
- Code can run on any platform that supports JVM and additional cross-platform support is possible via GraalVM or Scala Native.
- Promotes safe and reliable code through features such as immutability and side-effect free operations.
How do you intend to measure the success of your project?
- A successful proposal would result in diversification of operating client-nodes on the Cardano network via adoption of the Scarab binary for use in a decentralized application or wallet. Achieving even 1% market penetration by year-end 2024 with the client node implementation would be a considerable achievement given the current monopoly of the Haskell implementation.
- In the short-term, an alternative client will provide a means of expanding the reach of Cardano to the JVM ecosystem. While in the long-term, building on this work to create a block-producing node will contribute to trust in the resiliency and decentralization of the network.
Please describe your plans to share the outputs and results of your project?
- All code will be open-sourced and available via Github for comment and review
- The project will run on a two-week sprint cadence so progress reports will be compiled, posted to Github, and shared via Twitter and Discord following each sprint.