Skip to content

XVSStore

XVSStore holds reward tokens and transfers them on behalf of its configured owner, normally an XVS Vault. It is a non-proxy contract with separate admin and owner roles.

FunctionCaller requirementEffect
safeRewardTransfer(address,address,uint256)OwnerTransfers an active reward token, capped by the store’s available balance
setPendingAdmin(address)AdminStarts an admin transfer
acceptAdmin()Pending adminAccepts the admin role
setNewOwner(address)AdminReplaces the owner that can distribute or withdraw rewards
setRewardToken(address,bool)Admin or ownerEnables or disables a reward token
emergencyRewardWithdraw(address,uint256)OwnerWithdraws a reward token from the store

The owner can therefore both distribute active rewards and change which tokens are active. The admin can replace the owner. Permission reviews must account for both roles rather than treating the vault as the only privileged actor.

Source: XVSStore.sol in venus-protocol v10.3.0.