0GDA is a decentralized data availability (DA) service with deep consideration in security, scalability and decentralization. It is also the first DA solution with a built-in data storage layer. Users interact with 0G DA Client to submit and store their data into 0G DA Node for later retrieval.
To dive deep into the technical details, continue reading 0G DA spec.
Check out this example for how to integrate the 0GDA into your own applications.
For detailed public APIs, visit gRPC API section.
- Install dependencies
-
For Linux
sudo apt-get update sudo apt-get install cmake
-
For Mac
brew install cmake
- Install Go
-
For Linux
-
Download the Go installer
wget https://go.dev/dl/go1.22.0.linux-amd64.tar.gz
-
Extract the archive
rm -rf /usr/local/go && tar -C /usr/local -xzf go1.22.0.linux-amd64.tar.gz
-
Add /usr/local/go/bin to the PATH environment variable by adding the following line to your ~/.profile.
export PATH=$PATH:/usr/local/go/bin
-
-
For Mac
Download the Go installer from [https://go.dev/dl/go1.22.0.darwin-amd64.pkg](https://go.dev/dl/go1.19.3.darwin-amd64.pkg).\ Open the package file you downloaded and follow the prompts to install Go.
-
Download the source code
git clone -b v1.0.0-testnet https://github.com/0glabs/0g-da-client.git
Field | Description |
---|---|
--chain.rpc |
JSON RPC node endpoint for the blockchain network. |
--chain.private-key |
Hex-encoded signer private key. |
--chain.receipt-wait-rounds |
Maximum retries to wait for transaction receipt. |
--chain.receipt-wait-interval |
Interval between retries when waiting for transaction receipt. |
--chain.gas-limit |
Transaction gas limit. |
--combined-server.use-memory-db |
Whether to use mem-db for blob storage. |
--combined-server.storage.kv-db-path |
Path for level db. |
--combined-server.storage.time-to-expire |
Expiration duration for blobs in level db. |
--combined-server.log.level-file |
File log level. |
--combined-server.log.level-std |
Standard output log level. |
--combined-server.log.path |
Log file path. |
--disperser-server.grpc-port |
Server listening port. |
--disperser-server.retriever-address |
GRPC host for retriever. |
--batcher.da-entrance-contract |
Hex-encoded da-entrance contract address. |
--batcher.da-signers-contract |
Hex-encoded da-signers contract address. |
--batcher.finalizer-interval |
Interval for finalizing operations. |
--batcher.finalized-block-count |
Default number of blocks between finalized block and latest block. |
--batcher.confirmer-num |
Number of Confirmer threads. |
--batcher.max-num-retries-for-sign |
Number of retries before signing fails. |
--batcher.batch-size-limit |
Maximum batch size in MiB. |
--batcher.encoding-request-queue-size |
Size of the encoding request queue. |
--batcher.encoding-interval |
Interval between blob encoding requests. |
--batcher.pull-interval |
Interval for pulling from the encoded queue. |
--batcher.signing-interval |
Interval between slice signing requests. |
--batcher.signed-pull-interval |
Interval for pulling from the signed queue. |
--encoder-socket |
GRPC host of the encoder. |
--encoding-timeout |
Total time to wait for a response from encoder. |
--signing-timeout |
Total time to wait for a response from signer. |
-
Build combined server
make build
-
Run combined server
Update the following command by referencing the Configuration
Reference:
./bin/combined \ --chain.rpc L1_RPC_ENDPOINT \ --chain.private-key YOUR_PRIVATE_KEY \ --chain.receipt-wait-rounds 180 \ --chain.receipt-wait-interval 1s \ --chain.gas-limit 2000000 \ --combined-server.use-memory-db \ --combined-server.storage.kv-db-path ./../run/ \ --combined-server.storage.time-to-expire 2592000 \ --disperser-server.grpc-port 51001 \ --batcher.da-entrance-contract ENTRANCE_CONTRACT_ADDR \ --batcher.da-signers-contract 0x0000000000000000000000000000000000001000 \ --batcher.finalizer-interval 20s \ --batcher.confirmer-num 3 \ --batcher.max-num-retries-for-sign 3 \ --batcher.finalized-block-count 50 \ --batcher.batch-size-limit 500 \ --batcher.encoding-interval 3s \ --batcher.encoding-request-queue-size 1 \ --batcher.pull-interval 10s \ --batcher.signing-interval 3s \ --batcher.signed-pull-interval 20s \ --encoder-socket DA_ENCODER_SERVER \ --encoding-timeout 300s \ --signing-timeout 60s \ --chain-read-timeout 12s \ --chain-write-timeout 13s \ --combined-server.log.level-file trace \ --combined-server.log.level-std trace \ --combined-server.log.path ./../run/run.log
If you want to use the retrieval feature of the DA client, you also need to set up the DA Retriever. Please refer to this document for more details.
To make contributions to the project, please follow the guidelines here.