fluid-contracts-public/deployments/mainnet/v1_0_0/Vault_SUSDE_USDC_EthenaRateHandler.json

337 lines
163 KiB
JSON
Raw Normal View History

{
"address": "0x36639DAd77eC858574aaF07a68bBa62b7db19FfA",
"abi": [
{
"inputs": [
{
"internalType": "contract IFluidReserveContract",
"name": "reserveContract_",
"type": "address"
},
{
"internalType": "contract IFluidLiquidity",
"name": "liquidity_",
"type": "address"
},
{
"internalType": "contract IFluidVaultT1",
"name": "vault_",
"type": "address"
},
{
"internalType": "contract IStakedUSDe",
"name": "stakedUSDe_",
"type": "address"
},
{
"internalType": "address",
"name": "borrowToken_",
"type": "address"
},
{
"internalType": "uint256",
"name": "ratePercentMargin_",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "maxRewardsDelay_",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "utilizationPenaltyStart_",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "utilization100PenaltyPercent_",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "errorId_",
"type": "uint256"
}
],
"name": "FluidConfigError",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "oldMagnifier",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "newMagnifier",
"type": "uint256"
}
],
"name": "LogUpdateBorrowRateMagnifier",
"type": "event"
},
{
"inputs": [],
"name": "BORROW_TOKEN",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "LIQUIDITY",
"outputs": [
{
"internalType": "contract IFluidLiquidity",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "MAX_REWARDS_DELAY",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "RATE_PERCENT_MARGIN",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "RESERVE_CONTRACT",
"outputs": [
{
"internalType": "contract IFluidReserveContract",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "SUSDE",
"outputs": [
{
"internalType": "contract IStakedUSDe",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "UTILIZATION100_PENALTY_PERCENT",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "UTILIZATION_PENALTY_START",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "VAULT",
"outputs": [
{
"internalType": "contract IFluidVaultT1",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "calculateMagnifier",
"outputs": [
{
"internalType": "uint256",
"name": "magnifier_",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "currentMagnifier",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getSUSDeYieldRate",
"outputs": [
{
"internalType": "uint256",
"name": "rate_",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "rebalance",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"transactionHash": "0x29c1a2654e2b3dd1b09ec422f239cb76e57f09e4df0aa74de35c6fc088b54ab9",
"receipt": {
"to": "0x4e59b44847b379578588920cA78FbF26c0B4956C",
"from": "0x0Ed35B1609Ec45c7079E80d11149a52717e4859A",
"contractAddress": null,
"transactionIndex": 88,
"gasUsed": "730805",
"logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"blockHash": "0x2b3413f907849117205e8b54b6e219d996bb0ccab7e815cc199646e83f98320c",
"transactionHash": "0x29c1a2654e2b3dd1b09ec422f239cb76e57f09e4df0aa74de35c6fc088b54ab9",
"logs": [],
"blockNumber": 19492518,
"cumulativeGasUsed": "7777504",
"status": 1,
"byzantium": true
},
"args": [
"0x264786EF916af64a1DB19F513F24a3681734ce92",
"0x52Aa899454998Be5b000Ad077a46Bbe360F4e497",
"0x4045720a33193b4Fe66c94DFbc8D37B0b4D9B469",
"0x9D39A5DE30e57443BfF2A8307A4256c8797A3497",
"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
1000,
900,
9000,
1000
],
"numDeployments": 1,
"solcInputHash": "c13cf2c3a77404fea062b035bc07db70",
"metadata": "{\"compiler\":{\"version\":\"0.8.21+commit.d9974bed\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IFluidReserveContract\",\"name\":\"reserveContract_\",\"type\":\"address\"},{\"internalType\":\"contract IFluidLiquidity\",\"name\":\"liquidity_\",\"type\":\"address\"},{\"internalType\":\"contract IFluidVaultT1\",\"name\":\"vault_\",\"type\":\"address\"},{\"internalType\":\"contract IStakedUSDe\",\"name\":\"stakedUSDe_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrowToken_\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"ratePercentMargin_\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxRewardsDelay_\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"utilizationPenaltyStart_\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"utilization100PenaltyPercent_\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"errorId_\",\"type\":\"uint256\"}],\"name\":\"FluidConfigError\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"oldMagnifier\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newMagnifier\",\"type\":\"uint256\"}],\"name\":\"LogUpdateBorrowRateMagnifier\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"BORROW_TOKEN\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LIQUIDITY\",\"outputs\":[{\"internalType\":\"contract IFluidLiquidity\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_REWARDS_DELAY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RATE_PERCENT_MARGIN\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RESERVE_CONTRACT\",\"outputs\":[{\"internalType\":\"contract IFluidReserveContract\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SUSDE\",\"outputs\":[{\"internalType\":\"contract IStakedUSDe\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UTILIZATION100_PENALTY_PERCENT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"UTILIZATION_PENALTY_START\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VAULT\",\"outputs\":[{\"internalType\":\"contract IFluidVaultT1\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"calculateMagnifier\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"magnifier_\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"currentMagnifier\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getSUSDeYieldRate\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"rate_\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rebalance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"calculateMagnifier()\":{\"returns\":{\"magnifier_\":\"the calculated magnifier value.\"}},\"getSUSDeYieldRate()\":{\"returns\":{\"rate_\":\"sUSDe yearly yield rate scaled by 1e18 (1e18 = 1%, 1e20 = 100%)\"}}},\"version\":1},\"userdoc\":{\"events\":{\"LogUpdateBorrowRateMagnifier(uint256,uint256)\":{\"notice\":\"
"bytecode": "0x6101c06040523480156200001257600080fd5b5060405162000fbb38038062000fbb83398101604081905262000035916200020a565b886001600160a01b0381166200006857604051636801712d60e11b8152620186ab60048201526024015b60405180910390fd5b886001600160a01b0381166200009757604051636801712d60e11b8152620186ab60048201526024016200005f565b886001600160a01b038116620000c657604051636801712d60e11b8152620186ab60048201526024016200005f565b886001600160a01b038116620000f557604051636801712d60e11b8152620186ab60048201526024016200005f565b886001600160a01b0381166200012457604051636801712d60e11b8152620186ab60048201526024016200005f565b8815806200013457506127108910155b806200013e575087155b806200014c57506127108710155b8062000156575085155b156200017b57604051636801712d60e11b8152620186ad60048201526024016200005f565b505050506001600160a01b03998a166080525096881660a05293871660e05293861660c052941661010081905260408051602081810193909352600581830152815180820383018152606090910190915280519101206101a05261012093909352610140526101609190915261018052620002b1565b6001600160a01b03811681146200020757600080fd5b50565b60008060008060008060008060006101208a8c0312156200022a57600080fd5b89516200023781620001f1565b60208b01519099506200024a81620001f1565b60408b01519098506200025d81620001f1565b60608b01519097506200027081620001f1565b60808b01519096506200028381620001f1565b8095505060a08a0151935060c08a0151925060e08a015191506101008a015190509295985092959850929598565b60805160a05160c05160e05161010051610120516101405161016051610180516101a051610c1f6200039c60003960006104f401526000818161016f0152818161068701526107460152600081816101bd015281816105f201528181610629015261065701526000818160e9015261080001526000818161026b015281816105b5015281816106a801526106f00152600061020b01526000818161019601528181610824015281816108d401526109630152600081816101e4015281816104120152610a72015260008181610123015261053501526000818161023201526102cb0152610c1f6000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80634c90f25c1161008c578063a09291b611610066578063a09291b61461025e578063c759624214610266578063e9a815cd1461028d578063f3d915ad1461029557600080fd5b80634c90f25c146102065780636449b8d71461022d5780637d7c2a1c1461025457600080fd5b806330712109116100bd57806330712109146101915780633db2ebdd146101b8578063411557d1146101df57600080fd5b806309630339146100e45780632861c7d11461011e5780632ae248031461016a575b600080fd5b61010b7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b6101457f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610115565b61010b7f000000000000000000000000000000000000000000000000000000000000000081565b6101457f000000000000000000000000000000000000000000000000000000000000000081565b61010b7f000000000000000000000000000000000000000000000000000000000000000081565b6101457f000000000000000000000000000000000000000000000000000000000000000081565b6101457f000000000000000000000000000000000000000000000000000000000000000081565b6101457f000000000000000000000000000000000000000000000000000000000000000081565b61025c61029d565b005b61010b6104c1565b61010b7f000000000000000000000000000000000000000000000000000000000000000081565b61010b6107fc565b61010b610a39565b6040517f467c9eff0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063467c9eff906024016020604051808303816000875af1158015610329573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034d9190610afa565b61038d576040517fd002e25a000000000000000000000000000000000000000000000000000000008152620186ac60048201526024015b60405180910390fd5b60006103976104c1565b905060006103a3610a39565b90508082036103e3576040517fd002e25a000000000000000000000000000000000000000000000000000000008152620186ae6004820152602401610384565b6040517ff7a0a7e0000000000000000000000000000000000000000000000000000000008152600481018390527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063f7a0a7e090602401600060405180830381
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100df5760003560e01c80634c90f25c1161008c578063a09291b611610066578063a09291b61461025e578063c759624214610266578063e9a815cd1461028d578063f3d915ad1461029557600080fd5b80634c90f25c146102065780636449b8d71461022d5780637d7c2a1c1461025457600080fd5b806330712109116100bd57806330712109146101915780633db2ebdd146101b8578063411557d1146101df57600080fd5b806309630339146100e45780632861c7d11461011e5780632ae248031461016a575b600080fd5b61010b7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020015b60405180910390f35b6101457f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610115565b61010b7f000000000000000000000000000000000000000000000000000000000000000081565b6101457f000000000000000000000000000000000000000000000000000000000000000081565b61010b7f000000000000000000000000000000000000000000000000000000000000000081565b6101457f000000000000000000000000000000000000000000000000000000000000000081565b6101457f000000000000000000000000000000000000000000000000000000000000000081565b6101457f000000000000000000000000000000000000000000000000000000000000000081565b61025c61029d565b005b61010b6104c1565b61010b7f000000000000000000000000000000000000000000000000000000000000000081565b61010b6107fc565b61010b610a39565b6040517f467c9eff0000000000000000000000000000000000000000000000000000000081523360048201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063467c9eff906024016020604051808303816000875af1158015610329573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061034d9190610afa565b61038d576040517fd002e25a000000000000000000000000000000000000000000000000000000008152620186ac60048201526024015b60405180910390fd5b60006103976104c1565b905060006103a3610a39565b90508082036103e3576040517fd002e25a000000000000000000000000000000000000000000000000000000008152620186ae6004820152602401610384565b6040517ff7a0a7e0000000000000000000000000000000000000000000000000000000008152600481018390527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063f7a0a7e090602401600060405180830381600087803b15801561046b57600080fd5b505af115801561047f573d6000803e3d6000fd5b505060408051848152602081018690527f5b6a0a692af983e739bc1614f763914fdff02b02a8ba234c60c4d3cedf8e5f33935001905060405180910390a15050565b6000806104cc6107fc565b6040517fb5c736e40000000000000000000000000000000000000000000000000000000081527f0000000000000000000000000000000000000000000000000000000000000000600482015290915060009073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063b5c736e490602401602060405180830381865afa15801561057c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105a09190610b23565b9050601e81901c613fff1660006127106105da7f000000000000000000000000000000000000000000000000000000000000000082610b6b565b6105e49086610b84565b6105ee9190610b9b565b90507f00000000000000000000000000000000000000000000000000000000000000008211156107825761271082101561073e57600061064e7f000000000000000000000000000000000000000000000000000000000000000084610b6b565b9050600061067e7f0000000000000000000000000000000000000000000000000000000000000000612710610b6b565b905060006106cc7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000610bd6565b90506000826106db8584610b84565b6106e59190610b9b565b9050612710816107157f000000000000000000000000000000000000000000000000000000000000000083610b6b565b61071f9190610bd6565b610729908a610b84565b6107339190610b9b565b945050505050610782565b61271061076b7f000000000000000000000000000000000000000000000000000000000000000082610bd6565b6107759086610b84565b61077f9190610b9b565b90505b61ffff8316600081900361079d576127109550505050505090565b6107ae81662386f26fc10000610b84565b6107ba83612710610b84565b6107c49190610b9b565b95506127108610156107dd576127109550505050505090565b61ffff8611156107f45761ffff9550505050505090
"devdoc": {
"kind": "dev",
"methods": {
"calculateMagnifier()": {
"returns": {
"magnifier_": "the calculated magnifier value."
}
},
"getSUSDeYieldRate()": {
"returns": {
"rate_": "sUSDe yearly yield rate scaled by 1e18 (1e18 = 1%, 1e20 = 100%)"
}
}
},
"version": 1
},
"userdoc": {
"events": {
"LogUpdateBorrowRateMagnifier(uint256,uint256)": {
"notice": "emitted when borrow magnifier is updated at vault"
}
},
"kind": "user",
"methods": {
"MAX_REWARDS_DELAY()": {
"notice": "max delay in seconds for rewards update after vesting period ended, after which we assume rate is 0. e.g. 15 min"
},
"RATE_PERCENT_MARGIN()": {
"notice": "sUSDe vesting yield reward rate percent margin that goes to lenders e.g. RATE_PERCENT_MARGIN = 10% then borrow rate for debt token ends up as 90% of the sUSDe yield. (in 1e2: 100% = 10_000; 1% = 100)"
},
"UTILIZATION100_PENALTY_PERCENT()": {
"notice": "penalty percent target at 100%, on top of sUSDe yield rate if utilization is above UTILIZATION_PENALTY_START (in 1e2: 100% = 10_000; 1% = 100)"
},
"UTILIZATION_PENALTY_START()": {
"notice": "utilization penalty start point (in 1e2: 100% = 10_000; 1% = 100). above this, a penalty percent is applied, to incentivize deleveraging."
},
"calculateMagnifier()": {
"notice": "Calculates the new borrow rate magnifier based on"
},
"currentMagnifier()": {
"notice": "returns the currently configured borrow magnifier at the `VAULT`."
},
"getSUSDeYieldRate()": {
"notice": "calculates updated vesting yield rate based on `vestingAmount` and `totalAssets` of StakedUSDe contract"
},
"rebalance()": {
"notice": "Rebalances the borrow rate magnifier for `VAULT` based on borrow rate at Liquidity in relation to sUSDe yield rate (`getSUSDEYieldRate()`). Emits `LogUpdateBorrowRateMagnifier` in case of update. Reverts if no update is needed. Can only be called by an authorized rebalancer."
}
},
"notice": "Sets borrow rate for sUSDe/debtToken vaults based on sUSDe yield rate, by adjusting the borrowRateMagnifier",
"version": 1
},
"storageLayout": {
"storage": [],
"types": null
}
}