Proof of Data Availability

Sunrise's Data Availability Layer is validated by validators. Validators must validate data that may not be valid and send the proofs to chain.

This section describes how validators prove data.

Proof

The only data that require proof are those that have been sent MsgSubmitInvalidity and the status has been changed to CHALLENGING.

The threshold for CHALLENGING is when MsgSubmitInvalidity is sent for 33% (the default in genesis) of the entire shards.

The validator is then validated. If more than a certain number of shards are proved, the status changes to VERIFIED as usual. If not, the status changes to REJECTED.

See Data Availability for status and proof of data in the Data Availability Layer.

Sunrise-Data for Validator

sunrise-data provides validators with the functions to monitor and prove data that has become CHALLENGING.

Register proof deputy of your validator

Although validators can send tx themselves to send proof data, it is recommended to use a deputy address to prevent leakage of keys.

First, create a new account to serve as the deputy.

sunrised keys add your_deputy_account --keyring-backend=test

Next, send some uusdrise to this account using the tx bank send command. This will be used to pay for gas fees when submitting SubmitValidityProof transactions.

DEPUTY_ADDRESS=$(sunrised keys show your_deputy_account -a --keyring-backend=test)
sunrised tx bank send [your_validator_key] $DEPUTY_ADDRESS 1000000uusdrise \
    --chain-id=$CHAIN_ID \
    --gas-prices=0.025uusdrise --gas-adjustment 1.2 \
    --gas=auto \
    -y

Finally, register the deputy address with your validator. This transaction must be sent from your validator's account and only needs to be done once.

sunrised tx da register-proof-deputy $DEPUTY_ADDRESS \
   --from [your_validator_key] \
   --chain-id=$CHAIN_ID \
   --gas-prices=0.025uusdrise --gas-adjustment 1.2 \
   --gas=auto \
   -y

Register the address of the deputy to be used on sunrise-data.

How to set up

  1. Running sunrised as a validator See Validator Node for setting up.

  2. Clone sunrise-data repo

    cd ~
    git clone https://github.com/sunriselayer/sunrise-data.git
    cd sunrise-data
    make install
  3. Create and edit config.toml

    cp config.default.toml config.toml
    vi config.toml

    To connect to a local IPFS daemon, leave the ipfs_api_url field empty

    Change home_path to your .sunrise directory, proof_deputy_account to your sunrised key's name and validator_address to your validator address.

    [api]
    port = 8000
    ipfs_api_url = ""
    ipfs_address_info = ""
    
    [chain]
    address_prefix="sunrise"
    home_path="/home/ubuntu/.sunrise"
    keyring_backend="test"
    sunrised_rpc="http://localhost:26657"
    
    [validator]
     proof_deputy_account="your_deputy_account"
     validator_address="sunrisevaloper1a8jcsmla6heu99ldtazc27dna4qcd4jyv75vcz"
     proof_fees="10000uusdrise"
     proof_interval=5

Run IPFS on local

  1. Run IPFS

    wget https://dist.ipfs.tech/kubo/v0.31.0/kubo_v0.31.0_linux-amd64.tar.gz
    tar -xvzf kubo_v0.31.0_linux-amd64.tar.gz
    cd kubo
    sudo ./install.sh
    ipfs init --profile=lowpower
    ipfs daemon
  2. Check the IPFS node ID and optionally share and add a remote peer

    ipfs id

Start to proof data

On your sunrise-data directory,

sunrise-data validator

Or register as a service

vi /etc/systemd/system/sunrise-data.service
systemctl enable sunrise-data
systemctl start sunrise-data
[Unit]
Description = sunrise-data validator daemon
After=network-online.target

[Service]
User=ubuntu
WorkingDirectory=/home/ubuntu/sunrise-data
ExecStart = /home/ubuntu/go/bin/sunrise-data validator
Restart=on-failure
RestartSec=3
LimitNOFILE=1400000

[Install]
WantedBy = multi-user.target

If the setup is successful, the display will look like this

$ sunrise-data validator
{"level":"info","time":"2025-02-19T18:32:52+09:00","message":"Starting validator task"}
{"level":"info","time":"2025-02-19T18:32:52+09:00","message":"validator: sunrisevaloper1a8jcsmla6heu99ldtazc27dna4qcd4jyv75vcz deputy: sunrise155u042u8wk3al32h3vzxu989jj76k4zcc6d03n"}
{"level":"info","time":"2025-02-19T18:32:52+09:00","message":"On-chain data is checked every 5 sec"}

Last updated