🎛️Protocol Configurations
🖌️ Design Ethos
We have designed many parameters in Alpaca Finance to be configurable. While the initial configurations are set by the core developer team, we have every intention to let the Governance community decide on what needs to be changed which will happen through voting.
⏳ Timelock
Timelock is a contract for delaying changes to the protocol. This contract is an owner of all the major contracts in Alpaca Finance. Hence, every change needs to execute through this contract, which makes it function as a security moat.
In essence, every order from the admin(the group of core developers) has to pass through this contract and is delayed for 24 hours before taking effect. To be specific, the execution command for the order goes to the queue, waiting to be executed when the 24h delay is passed. This is a security feature that enables the community to see any upcoming updates and prepare in advance for them. If anything looks suspicious, they can pull their funds from the protocol before the update takes effect.
Below are the contracts owned by Timelock
All Vault Contracts
FairLaunch Contract
All Worker Contracts
All PriceOracle Contracts
All WorkerConfig Contracts
✏️ Multi-sig wallet
As an added layer of security, we also employ a multi-sig wallet. Any changes to be queued into our Timelock contract need to be approved by a multi-sig, adding another layer of security.
There are currently 4 signers on the multi-sig with a minimum of 2 required to sign a transaction.
⚙️ Adjustable Parameters
This section lists all adjustable parameters and functions in Alpaca Finance
FairLaunch Contract
addPool(_allocatedPoint, _stakeToken, _withUpdate)
_allocatedPoint = How many points assign to this pool. This will affect the ALPACAs distribution per block.
_stakeToken = The address of a required staking token.
_withUpdate = A flag for updatePool calculation
setPool(_pid, _allocatedPoint, _withUpdate)
_pid = Pool ID that you wish to adjust the point
_allocatedPoint = New points to be assign to this pool. This will affect the ALPACAs distribution per block.
_withUpdate = A flag for updatePool calculation
setBonus(_bonusMultiplier, _bonusEndBlock, _bonusLockUpBps)
_bonusMultiplier = Multiplier that will be applied during the bonus period
_bonusEndBlock = The block number that bonus will be ended
_bonusLockUpBps = % of bonus that is earned in the bonus period to be locked
Vault Contract
updateConfig(_newConfig)
_newConfig = A new contract that is implemented IVaultConfig interface
setFairLaunchPoolId(_pid)
_pid = Pool ID on Fair Contract that the staking token is debtToken owned by Vault
withdrawReserve(_to, _amount)
_to = The address to receive amount
_amount = The amount to be withdrawn from the reserve
redeuceReserve(_amount)
_amount = Reduce reserve portion for treasury management
PancakeswapWorker Contract
setReinvestBountyBps(_newBountyBps)
_newBountyBps = A new bounty that the bounty hunter will get when they trigger reinvest
setStrategyOk(_strategyAddresses, _ok)
_strategyAddresses = Addresses for the strategy contract
_ok = Can be either true or false. If the _strategyAddresses above need to be disabled then set _ok = false
setCriticalStrategies(_addStrategy, _liquidateStrategy)
_addStrategy = Set default addStrategy
_liquidateStrategy = Set default liquidateStrategy
SimplePriceOracle Contract
setFeeder(_address)
_address = The address of a new feeder
SimpleVaultConfig
setParams(_minDebtSize, _interestRate, _reservePoolBps, _killBps, _wrappedNative, _fairLaunch)
_minDebtSize = The minimum required for borrower to loan from the pool
_interestRate = Interest rate per second
_reservePoolBps = % to be put in reserve pool in BPS
_killBps = % that bounty hunters will get when they liquidate the position
_wrappedNative = Address of the wNative token
_fairLaunch = Address of the fair launch contract
setWorker(_workerAddress, _isWorker, _acceptDebt, _workFactor, _killFactor)
_workerAddress = The address of the worker
_isWorker = The flag to set if this is worker
_acceptDebt = The flag to set if this worker is accepting the debt
_workFactor = The flag threshold to prevent user from over leverage
_killFactor = The flag threshold to mark if position can be liquidated, aka liquidation threshold
ConfigurableInterestVaultConfig
setParams(_minDebtSize, _reservePoolBps, _killBps, _interestModelAddress, _wrappedNative, _fairLaunch)
_minDebtSize = The minimum required for borrower to loan from the pool
_reservePoolBps = % to be put in reserve pool in BPS
_killBps = % that bounty hunters will get when they liquidate the position
_interestModelAddress = Address of the interest model
_wrappedNative = Address of the wNative token
_fairLaunch = Address of the fair launch contract
PancakeswapWorkerConfig
setOracle(_newOracleAddress)
_newOracleAddress = The new oracle address
setConfigs([ ]_WorkerAddress, [ ]_configs)
[ ]_WorkerAddress = address of worker
[ ]_configs = Config object including:
_acceptDebt
_workFactor = The flag threshold to prevent user from over leverage
_killFactor = The flag threshold to mark if position can be liquidated, aka liquidation threshold
_maxPriceDiff
Last updated