🎛️ Thiết kế của Giao thức

🖌️ Ngôn ngữ thiết kế

Chúng tôi đã thiết kế các thông số trong Alpaca Finance cho phép chúng có thể được tùy chỉnh theo ý muốn. Mặc dù cấu hình ban đầu do nhóm nhà phát triển cốt lõi đặt ra, nhưng chúng tôi luôn có ý định để cộng đồng Quản trị quyết định những gì cần thay đổi thông qua bỏ phiếu.

Timelock

Timelock là một hợp đồng để trì hoãn các thay đổi đối với giao thức. Hợp đồng này là chủ sở hữu của tất cả các hợp đồng lớn trong Alpaca Finance. Do đó, mọi thay đổi cần phải thực hiện thông qua hợp đồng Timelock này, biến nó trở thành một lớp bảo mật.

Về bản chất, mọi lệnh từ quản trị viên (nhóm các nhà phát triển cốt lõi) phải thông qua hợp đồng này và bị trì hoãn trong 24 giờ trước khi có hiệu lực. Nói một cách cụ thể, lệnh thực thi sẽ đi vào hàng đợi, chờ được thực hiện khi thời gian trễ 24h trôi qua. Đây là một tính năng bảo mật cho phép cộng đồng xem mọi bản cập nhật sắp tới và chuẩn bị trước cho chúng. Nếu có bất kỳ điều gì đáng ngờ, họ có thể rút tiền từ giao thức trước khi bản cập nhật có hiệu lực.

Dưới đây là các hợp đồng nằm dưới sự kiểm soát của Timelock

  • Tất cả các hợp đồng Vault

  • Hợp đồng FairLaunch

  • Tất cả các hợp đồng Worker

  • Tất cả các hợp đồng PriceOracle

  • Tất cả các hợp đồng WorkerConfig

✏️ 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.

⚙️ Các thông số có thể điều chỉnh

Phần này liệt kê tất cả các thông số và chức năng có thể điều chỉnh trong 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