Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update dac documentation #882

Merged
merged 13 commits into from
Jan 26, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion arbitrum-docs/node-running/gentle-introduction-run-node.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ In order to be able to _interact with_ or _build applications on_ any of the Arb
Here, you can find resources that help you run different types of Arbitrum nodes:

- Step-by-step instructions for running different Arbitrum nodes, including [full Nitro node](./how-tos/running-a-full-node.mdx), [full Classic node](./how-tos/running-a-classic-node.mdx), [local dev node](./how-tos/local-dev-node.mdx), [feed relay](./how-tos/running-a-feed-relay.mdx), and [validator](./how-tos/running-a-validator.mdx)
- Step-by-step instructions for how to [read the sequencer feed](./how-tos/read-sequencer-feed.md), [build the Nitro locally](./how-tos/build-nitro-locally.md), [run a DAS](./how-tos/running-a-daserver.mdx) and [run the sequencer coordinator manager UI tool](./how-tos/running-a-sequencer-coordinator-manager.mdx)
- Step-by-step instructions for how to [read the sequencer feed](./how-tos/read-sequencer-feed.md), [build the Nitro locally](./how-tos/build-nitro-locally.md) and [run the sequencer coordinator manager UI tool](./how-tos/running-a-sequencer-coordinator-manager.mdx)
- Step-by-step instructions for [how to configure a Data Availability Committee](/node-running/how-tos/data-availability-committee/introduction.mdx)
- [Troubleshooting page](./troubleshooting-running-nodes.md)
- [Frequently asked questions](./faq.md)
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
label: "Configure a Data Availability Committee (DAC)"
collapsible: true
collapsed: true
position: 13
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
title: 'How to configure the Data Availability Committee (DAC) in your chain'
description: This how-to will help you configure the DAC in your chain.
author: jose-franco
sidebar_label: Configure the Data Availability Committee (DAC) in your chain
sidebar_position: 4
content-type: how-to
---

import UnderConstructionPartial from '../../../partials/_under-construction-banner-partial.md';

<UnderConstructionPartial />

Large diffs are not rendered by default.

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
---
title: 'How to configure a Data Availability Committee: Introduction'
description: Learn what's needed to configure a Data Availability Committee for your chain
author: jose-franco
sidebar_label: 'Introduction'
sidebar_position: 1
content-type: overview
---

import PublicPreviewBannerPartial from '../../../partials/_public-preview-banner-partial.md';

<PublicPreviewBannerPartial />

<p>
<a data-quicklook-from="arbitrum-anytrust-protocol">AnyTrust</a> chains rely on an external Data
Availability Committee (DAC) to store data and provide it on-demand instead of using its{' '}
<a data-quicklook-from="parent-chain">parent chain</a> as the Data Availability (DA) layer. The
members of the DAC run a Data Availability Server (DAS) to handle these operations.
</p>

This section offers information and a series of how-to guides to help you along the process of setting up a Data Availability Committee. These guides target two audiences: Committee members who wish to deploy a Data Availability Server, and chain owners who wish to configure their chain with the information of the Committee.
TucksonDev marked this conversation as resolved.
Show resolved Hide resolved

Before following the guides in this section, you should be familiarized with how the AnyTrust protocol works, and the role of the DAC in the protocol. Refer to _[Inside AnyTrust](/inside-anytrust.mdx)_ to learn more.

## If you are a DAC member

Committee members will need to run a DAS. To do that, they will first need to generate a pair of keys and deploy a DAS. They may also choose to deploy an additional mirror DAS. Find more information in [How to deploy a DAS](./deploy-a-das.mdx) and [How to deploy a mirror DAS](./deploy-a-mirror-das.mdx).

Here's a basic checklist of actions to complete for DAC members:

- [Deploy a DAS](./deploy-a-das.mdx). Send the following information to the chain owner:
- Public BLS key
- The https URL for the RPC endpoint which includes some random string (e.g. das.your-chain.io/rpc/randomstring123), communicated through a secure channel
- The https URL for the REST endpoint (e.g. das.your-chain.io/rest)
- [Deploy a mirror DAS](./deploy-a-mirror-das.mdx) if you want to complement your setup with a mirror DAS. Send the following information to the chain owner:
- The https URL for the REST endpoint (e.g. das.your-chain.io/rest)

## If you are a chain owner

Chain owners will need to gather the information from the committee members to craft the necessary information to update their chain and the batch poster (more information in [How to configure the DAC in your chain](./configure-the-dac-in-your-chain.mdx)). They might also want to test each DAS individually, by following the testing guides available in [How to deploy a DAS](./deploy-a-das.mdx#testing-the-das) and [How to deploy a mirror DAS](./deploy-a-mirror-das.mdx#testing-the-das).

Here's a basic checklist of actions to complete for chain owners:

- Gather the following information from every member of the committee:
- Public BLS Key
- URL of the RPC endpoint
- URL(s) of the REST(s) endpoint
- Ensure that at least one DAS is running as an [archive DAS](./deploy-a-das.mdx#archive-da-servers)
- Generate the keyset and keyset hash with all the information from the servers (guide coming soon)
- Craft the new configuration for the batch poster (guide coming soon)
- Craft the new configuration for your chain's nodes (guide coming soon)
- Update the SequencerInbox contract (guide coming soon)

## Ask for help

Configuring a DAC might be a complex process. If you need help setting it up, don't hesitate to ask us on [Discord](https://discord.gg/arbitrum).
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
The DAS comes with the option of producing Prometheus metrics. This option can be activated by using the following parameters:

| Parameter | Description |
| -------------------------------- | -------------------------------------------- |
| --metrics | Enables the metrics server |
| --metrics-server.addr | Metrics server address (default "127.0.0.1") |
| --metrics-server.port | Metrics server port (default 6070) |
| --metrics-server.update-interval | Metrics server update interval (default 3s) |

When metrics are enabled, several useful metrics are available at the configured port, at path `debug/metrics` or `debug/metrics/prometheus`.

### RPC metrics

| Metric | Description |
| ------------------------------------------------------------ | ------------------------------------ |
| arb_das_rpc_store_requests | Count of RPC Store calls |
| arb_das_rpc_store_success | Successful RPC Store calls |
| arb_das_rpc_store_failure | Failed RPC Store calls |
| arb_das_rpc_store_bytes | Bytes retrieved with RPC Store calls |
| arb_das_rpc_store_duration (p50, p75, p95, p99, p999, p9999) | Duration of RPC Store calls (ns) |

### REST metrics

| Metric | Description |
| ----------------------------------------------------------------- | ----------------------------------------- |
| arb_das_rest_getbyhash_requests | Count of REST GetByHash calls |
| arb_das_rest_getbyhash_success | Successful REST GetByHash calls |
| arb_das_rest_getbyhash_failure | Failed REST GetByHash calls |
| arb_das_rest_getbyhash_bytes | Bytes retrieved with REST GetByHash calls |
| arb_das_rest_getbyhash_duration (p50, p75, p95, p99, p999, p9999) | Duration of REST GetByHash calls (ns) |
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
Besides the parameters described in this guide, there are some more options that can be useful when running the DAS. For a comprehensive list of configuration parameters, you can run `daserver --help`.

| Parameter | Description |
| ----------- | -------------------------------------------------------------------------------------------------------------------- |
| --conf.dump | Prints out the current configuration |
| --conf.file | Absolute path to the configuration file inside the volume to use instead of specifying all parameters in the command |
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
| Parameter | Description |
| --------------------------------------------- | -------------------------------------------------------------------------------------------------------- |
| --data-availability.ipfs-storage.enable | Enables storage/retrieval of sequencer batch data from IPFS |
| --data-availability.ipfs-storage.profiles | Comma separated list of IPFS profiles to use |
| --data-availability.ipfs-storage.read-timeout | Timeout for IPFS reads, since by default it will wait forever. Treat timeout as not found (default 1m0s) |
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
| Parameter | Description |
| ---------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- |
| --data-availability.local-db-storage.enable | Enables storage/retrieval of sequencer batch data from a database on the local filesystem |
| --data-availability.local-db-storage.data-dir | Absolute path of the directory inside the volume in which to store the database (it must exist) |
| --data-availability.local-db-storage.discard-after-timeout | Whether to discard data after its expiry timeout (setting it to false, activates the “archive” mode) |
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
| Parameter | Description |
| ----------------------------------------------- | ------------------------------------------------------------------------------------------- |
| --data-availability.local-file-storage.enable | Enables storage/retrieval of sequencer batch data from a directory of files, one per batch |
| --data-availability.local-file-storage.data-dir | Absolute path of the directory inside the volume in which to store the data (it must exist) |
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
| Parameter | Description |
| ---------------------------------------------------- | ---------------------------------------------------------------------------------------------------- |
| --data-availability.s3-storage.enable | Enables storage/retrieval of sequencer batch data from an AWS S3 bucket |
| --data-availability.s3-storage.access-key | S3 access key |
| --data-availability.s3-storage.bucket | S3 bucket |
| --data-availability.s3-storage.region | S3 region |
| --data-availability.s3-storage.secret-key | S3 secret key |
| --data-availability.s3-storage.object-prefix | Prefix to add to S3 objects |
| --data-availability.s3-storage.discard-after-timeout | Whether to discard data after its expiry timeout (setting it to false, activates the “archive” mode) |
Loading