Skip to main content
Version: v4 (next)

Update Trust Deposit Params (Governance)

This guide shows how to update Trust Deposit module parameters through a governance proposal wrapping /verana.td.v1.MsgUpdateParams (spec MOD-TD-MSG-4).

Governance-only

td update-params is not exposed as a direct CLI command. The message signer is the x/gov module account, so parameter changes must be submitted as a gov submit-proposal.

Environment Setup

USER_ACC="my-user-account"
CHAIN_ID="vna-testnet-1"
NODE_RPC="https://rpc.testnet.verana.network"

Step 1: Get the Governance Authority Address

GOV_AUTH=$(veranad q auth module-accounts --node $NODE_RPC --output json \
| jq -r '.accounts[] | select(.value.name=="gov") | .value.address')

Step 2: Fetch Current Params

MsgUpdateParams replaces the whole params object, so all fields must be supplied. Start from the current values:

veranad q td params --node $NODE_RPC --output json

Capture the fields you want to preserve verbatim (Bech32 pool address, and the live share value — see the warning below):

YIELD_INTERMEDIATE_POOL=$(veranad q td params --node $NODE_RPC -o json | jq -r .params.yield_intermediate_pool)
SHARE_VALUE=$(veranad q td params --node $NODE_RPC -o json | jq -r .params.trust_deposit_share_value)

Step 3: Build the Proposal JSON

Edit only the values you intend to change; keep every field present.

cat > trust_deposit_params_proposal.json <<JSON
{
"messages": [
{
"@type": "/verana.td.v1.MsgUpdateParams",
"authority": "${GOV_AUTH}",
"params": {
"trust_deposit_reclaim_burn_rate": "0",
"trust_deposit_share_value": "${SHARE_VALUE}",
"trust_deposit_rate": "50000000000000000",
"wallet_user_agent_reward_rate": "100000000000000000",
"user_agent_reward_rate": "100000000000000000",
"trust_deposit_max_yield_rate": "200000000000000000",
"yield_intermediate_pool": "${YIELD_INTERMEDIATE_POOL}",
"trust_deposit_block_reward_share": "200000000000000000"
}
}
],
"metadata": "ipfs://CID",
"deposit": "10000000uvna",
"title": "Update Trust Deposit Params",
"summary": "Updates trust deposit parameters.",
"expedited": false
}
JSON

Parameter Descriptions

ParameterDescription
trust_deposit_reclaim_burn_rateFraction burned when freed deposit is recycled.
trust_deposit_share_valueLive value of one share (see warning below).
trust_deposit_rateFraction of trust fees added to the executing Corporation's trust deposit.
wallet_user_agent_reward_rateReward rate for wallet user agents.
user_agent_reward_rateReward rate for user agents.
trust_deposit_max_yield_rateMaximum annualized yield a trust deposit can earn from block rewards.
yield_intermediate_poolBech32 address of the Yield Intermediate Pool module account.
trust_deposit_block_reward_shareTarget fraction of block rewards directed to trust deposit yield.
Rate encoding

All rate values are encoded as 18-decimal fixed-point integers. 200000000000000000 = 0.20 (20%); 100000000000000000 = 0.10 (10%); 0 = 0%.

trust_deposit_share_value is preserved (TD-CRIT-1, fixed)

trust_deposit_share_value is a live, per-block value mutated by the module's BeginBlocker as yield accrues — it behaves as protocol state, not a static setting. In an earlier build (audit finding TD-CRIT-1), any MsgUpdateParams wholesale-replaced the params and reset this live share price to whatever was drafted in the proposal, retroactively corrupting every holder's yield.

This is fixed: parameter updates no longer reset trust_deposit_share_value. Even though the field must be present in the proposal JSON, the live per-block value is preserved. As a safe practice, pass the current value through unchanged (as $SHARE_VALUE above) rather than hardcoding an old constant.

Step 4: Submit the Proposal

veranad tx gov submit-proposal trust_deposit_params_proposal.json \
--from $USER_ACC --keyring-backend test --chain-id $CHAIN_ID \
--fees 750000uvna --gas auto --node $NODE_RPC

Step 5: Track and Vote

veranad q gov proposals --node $NODE_RPC
PROPOSAL_ID=1
veranad tx gov vote $PROPOSAL_ID yes \
--from $USER_ACC --keyring-backend test --chain-id $CHAIN_ID \
--fees 650000uvna --gas auto --node $NODE_RPC

Step 6: Verify the Update

veranad q td params --node $NODE_RPC --output json