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=testNext, 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 \
-yFinally, 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 \
-yRegister the address of the deputy to be used on sunrise-data.
How to set up
Running
sunrisedas a validator See Validator Node for setting up.Clone sunrise-data repo
cd ~ git clone https://github.com/sunriselayer/sunrise-data.git cd sunrise-data make installCreate and edit
config.tomlcp config.default.toml config.toml vi config.tomlTo connect to a local IPFS daemon, leave the
ipfs_api_urlfield emptyChange
home_pathto your .sunrise directory,proof_deputy_accountto your sunrised key's name andvalidator_addressto 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
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 daemonCheck 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 validatorOr 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.targetIf 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