Network Governance Authority Slashing
In some very rare cases, slashing the trust deposit of a given Permission can be limited and may not provide a sufficient sanction, if committed fraud is considered very high.
Slash Trust Deposit
This method can only be called by a governance proposal. A globally slashed account MUST repay the slashed deposit in order to continue to use the services provided by the VPR. When an account is slashed, and while slashed deposit has not been repaid, all account linked permissions MUST be considered non trustable.
This method is for network governance authority slash. For ecosystem slash, see Slash a Permission.
Environment Setup
Set the following environment variables before running the CLI commands:
USER_ACC="my-user-account"
USER_ACC_LIT="verana1sxau0xyttphpck7vhlvt8s82ez70nlzw2mhya0"
SLASHED_ACCOUNT="bad-user"
SLASHED_ACCOUNT_LIT="verana1example0123456789abcdefghijklmnopqrstuv"
CHAIN_ID="vna-testnet-1"
NODE_RPC="http://node1.testnet.verana.network:26657"
Step 1: Prepare the Governance Proposal
Create a JSON file for the SlashTrustDepositProposal. This proposal will slash the trust deposit of a specified account.
Example slash_proposal.json:
jq -n --arg acc "$SLASHED_ACCOUNT_LIT" \
'{
messages: [
{
"@type": "/verana.td.v1.MsgSlashTrustDeposit",
authority: "verana10d07y265gmmuvt4z0w9aw880jnsr700j22m4w8",
account: $acc,
amount: "1000000"
}
],
metadata: "ipfs://CID",
deposit: "10000000uvna",
title: "Slash Trust Deposit for Fraudulent Activity",
summary: ("This proposal requests to slash 1,000,000 uvna from the trust deposit of account " + $acc + " due to verified fraudulent activity. The account will need to repay this slashed amount before being able to participate in the VPR again."),
expedited: false
}' > slash_proposal.json
Parameters:
authority: The governance module address (check withveranad q auth module-accounts --node $NODE_RPC)account: The account address to be slashedslash_amount: Amount to slash in uvnadeposit: Initial deposit for the proposal (minimum 10000000uvna)title: Clear title describing the proposalsummary: Detailed explanation of the slashing reason
Step 2: Submit the Governance Proposal
veranad tx gov submit-proposal slash_proposal.json \
--from $USER_ACC \
--keyring-backend test \
--chain-id $CHAIN_ID \
--fees 750000uvna \
--gas auto \
--node $NODE_RPC
Step 3: Query the Proposal
After submission, check the proposal status:
veranad q gov proposals --node $NODE_RPC
Note the proposal ID from the output.
Step 4: Vote on the Proposal
Validators and delegators can vote on the proposal. The voting period is typically 10 minutes on testnet.
Vote Options:
yes- In favor of slashingno- Against slashingno_with_veto- Against and considers proposal maliciousabstain- Neutral stance
Cast Your Vote:
PROPOSAL_ID=1 # Replace with actual proposal ID
veranad tx gov vote $PROPOSAL_ID yes \
--from $VALIDATOR_ACC \
--keyring-backend test \
--chain-id $CHAIN_ID \
--fees 650000uvna \
--gas auto \
--node $NODE_RPC
Step 5: Monitor Proposal Status
Track the voting progress and tally:
# Check vote tally
veranad q gov tally $PROPOSAL_ID \
--output json \
--node $NODE_RPC
# Check detailed proposal status
veranad q gov proposal $PROPOSAL_ID \
--output json \
--node $NODE_RPC
Step 6: Proposal Execution
If the proposal passes (reaches quorum and majority approval), it will be automatically executed at the end of the voting period. The trust deposit will be slashed from the specified account.
Verify the slash:
veranad q td get-trust-deposit $SLASHED_ACCOUNT_LIT \
--node $NODE_RPC \
--output json
The output will show:
slashed_deposit: The amount that was slashedslash_count: Incremented by 1
Repay Slashed Trust Deposit
Repay a governance-slashed trust deposit. This operation can be executed by any account on behalf of the slashed account.
A slashed account cannot participate in the VPR until the slashed deposit is fully repaid. All permissions linked to the slashed account are considered non-trustable until repayment is complete.
Syntax
veranad tx td repay-slashed-td [account] [amount] \
--from <user> \
--chain-id <chain-id> \
--keyring-backend test \
--fees <amount> \
--gas auto \
--node <rpc-endpoint>
Parameters
[account]: The account address whose slashed deposit you want to repay (mandatory)[amount]: Amount to repay in uvna (mandatory, must be ≤ slashed_deposit)
Example: Repay Your Own Slashed Deposit
# First, check your slashed deposit amount
veranad q td get-trust-deposit $SLASHED_ACCOUNT_LIT \
--node $NODE_RPC \
--output json
# Repay the slashed amount
SLASHED_AMOUNT=1000000 # Replace with actual slashed amount
veranad tx td repay-slashed-td $SLASHED_ACCOUNT_LIT $SLASHED_AMOUNT \
--from $USER_ACC \
--chain-id $CHAIN_ID \
--keyring-backend test \
--fees 600000uvna \
--gas auto \
--node $NODE_RPC
Example: Repay on Behalf of Another Account
Any account can repay the slashed deposit for another account:
REPAY_AMOUNT=1000000
veranad tx td repay-slashed-deposit $SLASHED_ACCOUNT_LIT $REPAY_AMOUNT \
--from $USER_ACC \
--chain-id $CHAIN_ID \
--keyring-backend test \
--fees 600000uvna \
--gas auto \
--node $NODE_RPC
Verify Repayment
After repayment, verify the trust deposit status:
veranad q td get-trust-deposit $SLASHED_ACCOUNT \
--node $NODE_RPC \
--output json
Expected changes:
slashed_deposit: Reduced by the repaid amountrepaid_deposit: Increased by the repaid amountlast_repaid: Updated with repayment timestamplast_repaid_by: Shows the account that made the repayment
Once slashed_deposit reaches 0, all account permissions become trustable again and the account can fully participate in the VPR.
Prerequisites for All Operations
- Sufficient balance for transaction fees
- For voting: Must have voting power (validator or delegator)
- For repayment: Must have sufficient uvna to cover the repayment amount
- Proposal submission requires minimum deposit (typically 10000000uvna)