Welcome to the Avail Project Developer Documentation, your go-to resource for all things related to data availability and modular blockchain development. Designed with a focus on community collaboration, this repository aims to provide the most accurate, comprehensive, and up-to-date information for anyone interested in learning about, contributing to, or maintaining projects within the Avail ecosystem.
- Avail Overview
- Repository Overview
Avail aims to revolutionize the blockchain space by providing a trust-minimized and secure base layer focused on data availability. This base layer serves as the foundation for next-generation, trust-minimized applications and blockchains.
Traditional monolithic blockchains like Ethereum have faced scaling challenges due to handling multiple operations like Execution, Settlement, Ordering, and Data Availability on a single chain. Avail adopts a modular approach, separating these core operations into different layers for greater scalability and flexibility.
Avail is a blockchain-based platform focused on creating a general-purpose data availability layer, addressing key challenges such as scalability, governance, and decentralization. By enabling technologies like Validiums and Sovereign Rollups, Avail allows for off-chain data availability, which significantly reduces costs and enhances efficiency.
- Data Blob Indexing: Avail simplifies data indexing by tying all transaction data to an application ID.
- Erasure Encoding: Adds redundancy to the data, making it harder for nodes to suppress information.
- KZG Polynomial Commitments: Ensures that the data has a footprint in the Avail block header.
- Decentralized Network of Validators: Avail aims to support up to 1,000 external validators to reduce centralization risks.
- Validity Proofs: Allows light clients to guarantee state correctness and data availability immediately after finalizing.
- Trust-Minimized Data Availability: Avail provides a secure and decentralized solution for data availability.
- Data Attestation Bridge: Allows for attestation to Ethereum and other EVM-compatible chains, proving that data is available.
Avail's light client network ensures high data availability through Data Availability Sampling. As more light clients join the network, Avail can support bigger blocks, unlocking significant scaling potential for blockchains.
Below is a curated list of GitHub repositories that are actively tracking the various development efforts related to Avail.
Repository Name & Link | Description |
---|---|
Reference Document | Comprehensive document outlining the rationale, design decisions, and theoretical foundations. |
Avail Node | Repository for the Avail node implementation, built using Substrate. |
Light Client | Light client designed for verifying data availability proofs on Avail. |
Explorer | Implementation repository for the Avail explorer, built using PolkadotJS Apps. |
Tests | Repository for end-to-end tests designed to validate Avail's functionalities. |
Category | Repository Name | Description |
---|---|---|
Core Components | Avail | Main DA (Data Availability) Node for the Avail project. |
Avail Core | Core components for Avail's data availability layer. | |
Light Clients | Avail Light | Light client for Avail. |
Avail Light Bootstrap | Bootstrap for Avail Light client. | |
Avail Light Relay | Relay for Avail Light client. | |
Applications | Avail Apps | Repository for applications built on Avail. |
Substrate (now part of Polkadot SDK) Integration | Go Substrate RPC Client | RPC client for Substrate integration. |
Substrate | Fork of Substrate for Avail. | |
Explorations | Avail Explorations | Experimental features and research. |
Avail Sovereign DA Adapter | Data availability adapter for Sovereign Rollups. | |
Tooling | Availup | CLI tool for Avail. |
Avail JS | JavaScript library for Avail; Fork of PolkadotJS | |
Contracts and Proofs | Op EVM Contracts | EVM contracts for Avail. |
Poly Multiproof | Multiproof contracts for Avail. | |
SDKs | Sovereign SDK | SDK for Sovereign Rollups on Avail. |
Proposals | RFCs | Repository for Avail Request for Comments and proposals. |
The Avail Developer Documentation is built using Docusaurus, making it easy to serve and host its static files.
The Avail Documentation is deployed across two distinct environments: staging and prod. Both are configured to operate from the main
branch of the repository.
-
Staging: Hosted on Digital Ocean, this environment serves as the testing ground for new changes. It allows for quality assurance and verification before updates are pushed to Production. You can view the staging site here.
-
Production (Prod): This is the live environment, hosted on GitHub Pages, and is manually deployed by the Avail Documentation team. It is accessible to end-users and receives updates only after they have been successfully validated in the Staging environment.
The documentation utilizes Algolia's DocSearch to provide a powerful and user-friendly search experience. DocSearch is specifically designed to improve navigation in documentation websites, making it easier for users to find the information they need.
Plausible Analytics is integrated into the platform to monitor user interactions. This helps in understanding user engagement and behavior, thereby aiding in the continuous improvement of the documentation.
❗ The documentation is currently undergoing reorganization and frequent updates in preparation for the Avail mainnet launch. Translation efforts will be prioritized once this is complete. |
---|
This section provides an overview of the various files and folders in the Avail Documentation repository, explaining the purpose of each.
Name | Purpose |
---|---|
LICENSE |
Contains the license information for the project. |
README.md |
The main introduction file for the Avail Docs repository. |
babel.config.js |
Configuration file for Babel, a JavaScript compiler. |
build/ |
Contains static content generated for deployment. |
docusaurus.config.js |
Configuration file for website layout and other Docusaurus settings. |
docs/ |
Contains the Markdown files that make up the content of the documentation. |
node_modules/ |
Contains all the npm packages and dependencies. |
package.json |
Specifies dependencies and scripts for the project. |
sidebars.js |
Used to modify the sidebar navigation. |
src/ |
Contains source files for the project. |
static/ |
Contains static assets like images, CSS, and fonts. |
yarn.lock |
Yarn lock file to keep track of all package versions. |
The Documentation team at Avail are the primary maintainers of the Avail Documentation and will review all issues and pull requests created in this repository. If you spot typos or grammar mistakes, please go ahead and submit a pull request with the fixes. For more significant changes, it's advisable to start with a GitHub issue to discuss it with the maintainers. We generally prefer pull requests over issues for suggesting changes to the Docs.
❗ We are in the process of setting guidelines to ensure all new contributions continue to improve the Docs without compromising its quality. Please stay tuned. |
---|
Before making a contribution, please consult any existing issues or initiate a new discussion to ensure alignment with the documentation's objectives. Your contributions can significantly enrich the Docs in the following ways:
-
General Overviews: Introductory articles that provide a comprehensive understanding of Avail's data availability layer and modular approach to blockchains.
-
Technical Deep Dives: Detailed explorations into specific components of Avail's architecture, such as its data availability layer, modularity, and consensus algorithms.
-
Use-Case Scenarios: Articles that showcase real-world applications of Avail in solutions like Validiums, app-chains, and Sovereign Rollups.
-
Tooling: Documentation or guides on tools that facilitate development, testing, or deployment on Avail. This could include IDE plugins, testing frameworks, or monitoring tools.
-
Third-Party Services and Deployments: Information on external services, deployments, and implementations that integrate with Avail. This could include oracles, data analytics platforms, liquidity providers, as well as infrastructure solutions that provide Avail-based infrastructure.
-
Community Contributions: Lists of active Avail communities, educational resources, or upcoming events that enrich the ecosystem.
-
Governance & Economics: Insights into the governance model and tokenomics that underpin Avail's network.
-
Security Practices: Guidelines and resources for ensuring the security and integrity of applications, smart contracts, and general infrastructure on Avail.
-
Troubleshooting Guides: Solutions to common challenges, FAQs, and other resources that assist both newcomers and experienced users.
-
Emerging Technologies: Articles on upcoming features, advancements, or experimental technologies in the Avail pipeline. For instance, contributions could explore the impact of "Dank Sharding" on Avail's scalability, transaction costs, and its enablement of new decentralized applications.
Note: This is a general overview and the actual repository may contain additional files and folders for specific functionalities.
Contributing to the Avail Documentation is simple. You'll need a GitHub account and a basic understanding of Markdown syntax to get started.
- Locate the Page: Visit the Avail Documentation page you wish to edit.
- Navigate to the Bottom: Scroll to the bottom of the page.
- Edit Link: Click on the Edit this page link. This will redirect you to the corresponding Markdown file on GitHub.
- Edit Mode: Once on GitHub, click the pencil icon located in the upper-right corner to enter edit mode.
- Make Edits: Modify the Markdown file as needed.
- Initiate Pull Request: Scroll to the bottom and click on Create pull request.
- Title Your PR: Give your pull request a descriptive title. For example, if you're editing the "Getting Started" page, you could title it Update /docs/getting-started.md.
- Describe Changes: In the pull request description, specify the issue your changes resolve.
See GitHub Docs on Linking a Pull Request to an Issue for guidance.
- Additional Information: Provide a concise summary of the changes you've made. Include screenshots or references if applicable.
- Submit: Click Propose changes to finalize your pull request. This will create a new branch in your fork.
For those who want to quickly install and start the Avail Documentation locally, you can follow these steps:
yarn
yarn start
Prerequisites:
-
Fork the Repository
See GitHub Docs: Fork a repo for guidance.
-
Clone Your Fork
git clone git@github.com:availproject/availproject.github.io.git
-
Navigate to the Repository
cd availproject.github.io
-
Add Upstream Remote
git remote add upstream https://github.com/availproject/avail-docs
-
Sync Your Fork
git checkout master git fetch upstream git merge upstream/master
-
Install Dependencies
yarn install
The site is built using Docusaurus. You may need to install Docusaurus before running the documentation locally.
yarn add docusaurus
Alternatively, you can upgrade Docusaurus.
yarn upgrade @docusaurus/core@latest @docusaurus/preset-classic@latest
-
Run the Docs Locally
yarn start
The Avail Project Developer Documentation is licensed under the MIT License free software license.