🎛️การกำหนดค่าโปรโตคอล

🖌️ หลักการออกแบบ

เราได้ออกแบบพารามิเตอร์ต่างๆใน Alpaca Finance ให้มีการสามารถเปลี่ยนและกำหนดค่าได้ ในขณะที่การกำหนดค่าเริ่มต้นถูกกำหนดโดยทีมนักพัฒนาหลัก เรามีความตั้งใจที่จะให้คอมมูนิตี้ของเรามีส่วนร่วมในกาตัดสินใจเกี่ยวกับสิ่งที่จำเป็นต้องเปลี่ยนแปลง ซึ่งจะเกิดขึ้นผ่านการลงคะแนน

Timelock

Timelock เป็น contract ที่ทำให้มี delay ในการเปลี่ยนแปลงโปรโตคอล contract นี้เป็นเจ้าของ contract หลักทั้งหมดใน Alpaca Finance ดังนั้น ทุกการเปลี่ยนแปลงจำเป็นต้องดำเนินการผ่าน contract นี้ ซึ่งทำให้ contract นี้เป็นเครื่องมือรักษาความปลอดภัย

โดยพื้นฐานแล้วทุกคำสั่งจากผู้ดูแลระบบ (กลุ่มนักพัฒนาหลัก) จะต้องผ่าน contract นี้และทำให้เกิด delay ไป 24 ชั่วโมงก่อนที่การเปลี่ยนแปลงจะมีผล เพื่อให้เกิดความชัดเจน ทุกคำสั่งจะต้องมีการไปเข้าคิวรอดำเนินการ และเมื่อผ่านไป 24 ชั่วโมงถึงจะสามารถดำเนินการ execute คำสั่งได้ นี่คือคุณลักษณะด้านความปลอดภัยที่ช่วยให้ community สามารถเห็นการอัปเดตที่จะเกิดขึ้นและเตรียมการล่วงหน้า หากมีสิ่งใดที่น่าสงสัยผู้ใช้งานสามารถดึงเงินจากโปรโตคอลก่อนที่การอัปเดตจะมีผล

ด้านล่างนี้คือ contract ต่างๆที่ Timelock เป็นเจ้าของ

  • Vault Contracts ทั้งหมด

  • FairLaunch Contract

  • Worker Contracts ทั้งหมด

  • PriceOracle Contracts ทั้งหมด

  • WorkerConfig Contracts ทั้งหมด

✏️ กระเป่า Multi-sig

เพื่อความปลอดภัยที่มากขึ้น เราได้ใช้กระเป๋า multi-sig นั่นหมายความการเปลี่ยนแปลงใดๆที่จะขึ้นคิวในสัญญา Timelock จะเกิดขึ้นเมื่อได้รับการอนุมัติจากแอดเดรส multi-sig

ตอนนี้มีผู้ที่สามารถเซ็นสัญญา 4 คนบน multi-sig โดยที่จำเป็นต้องมีผู้เซ็นอย่างน้อย 2 คนต่อธุรกรรม

⚙️ พารามิเตอร์ที่ปรับได้

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 kill 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 kill threshold

      • _maxPriceDiff

Last updated