🗝️Access Controls and Permissions
1. Overview
This section gives an overview of smart contract access controls for the full Astroport protocol. Many of the contracts on Astroport are both upgradeable (can have their code ID changed) and have an owner that can change certain parameters.
2. Upgradeable Contracts
The following is a list of Astroport smart contracts that can have their code upgraded:
xyk/constant product pools
Stableswap pools
Maker contract that swaps fees for ASTRO
Lockdrop contract
Router contract
Factory contract
Vesting contract (contract that decreases amount of ASTRO to give to LPs each year via generator)
Staking contract for ASTRO → xASTRO
Generator contract
DAO treasury contract
Assembly contract
The ASTRO token and the xASTRO token cannot be upgraded.
Pool Upgradeability
A specific pair (e.g LUNA/UST) cannot have both a stableswap and a xyk pool at the same time. If someone creates a xyk for a specific token pair, Astroport governance will have to deregister the pool if the intent was to use stableswap instead. Same thing if someone creates an invalid stableswap and liquidity should go to a xyk instead. In short, a xyk pool should not be upgraded to a stableswap or vice-versa.
3. Ownable Contracts
The following is a list of contracts that have an owner
who can change specific parameters.
Factory
Can change general parameters such as the
owner
,token_code_id, fee_address
,generator_address
andwhitelist_code_id
Can update a pair type's configuration which includes its
code_id
,pair_type
(stableswap, XYK or custom),total_fee_bps
,maker_fee_bps
and whether the poolis_disabled
Can deregister a pool
Can create a brand new pool type
Stableswap Pool
Can update the pool amplification (with
next_amp
) and specify the timestamp until which the current amplification scales to the new one (next_amp_time
)The bLUNA specific stableswap can also have its
bluna_rewarder
changed (the contract distributing bLUNA rewards)The
owner
can change their own address
Generator
Can set the
alloc_points
for a generator as well as mention whether a generator has dual rewards (and attach a proxy contract for 3rd party rewards)Can add a new generator, specifying its initial
alloc_points
, whether it gets dual rewards or not and the proxy contract used for 3rd party rewardsCan update the address of the generator vesting contract
The
owner
can change their own address
Maker
Can update the factory address, xASTRO staking address, vxASTRO fee distributor address, the percentage of fees going to vxASTRO stakers and the
max_spread
used to swap fee tokens to ASTROCan update bridge tokens used to swap fee tokens to ASTRO
The
owner
can change their own address
Generator Vesting
Can add new vesting schedules targeted at different addresses
The
owner
can change their own address
DAO Treasury
Current treasury admins can change the list of admins
Assembly
Can change the proposal voting period, the delay between marking a proposal as successful and it being available for execution and the proposal expiration period
Can change the amount of xASTRO needed to lock in order to create a proposal, the required voting power quorum needed to pass a vote, the required majority of votes that a proposal needs to have to be successful and the list of whitelisted domains used to sanitize the main link submitted in a proposal
4. Governance Delays
The Astral Assembly enforces a delay between the moment when a proposal is marked as successful and the moment when that proposal can be executed. You can check out the Assembly parameters here.
5. Pausing the Protocol
Although governance can propose and implement a pause functionality in the protocol, at the moment there are no pause functions per se in any contract. This design decision stems from the fact that Astroport was initially envisioned as an unstoppable protocol which is as close as possible to a public good for the whole Terra ecosystem. There are though ways to deregister pools from the Astroport Factory as well as completely stop ASTRO emissions for a generator.
Last updated
Was this helpful?