Address Contract Partially Verified
Address
0xC9332fdCB1C491Dcc683bAe86Fe3cb70360738BC
Balance
0 ETH
Nonce
19
Code Size
6098 bytes
Creator
0xbabe6188...9f67 at tx 0xa951cc75...bcdf5b
Indexed Transactions
0
Contract Bytecode
6098 bytes
0x6003361161000c5761139d565b60003560e01c346117805763e9cbd822811861003e576004361061178057602061179260003960005160405260206040f35b638a82f1fe8118610afe576101243610611780576004358060a01c61178057610160526084358060a01c611780576101805260a4358060a01c611780576101a052600054600214611780576002600055620186a15433181561010057600a6101c0527f4f6e6c792061646d696e000000000000000000000000000000000000000000006101e0526101c0506101c051806101e001601f826000031636823750506308c379a06101805260206101a052601f19601f6101c051011660440161019cfd5b6002602435101561011257600061011b565b61271060243511155b6101855760076101c0527f57726f6e672041000000000000000000000000000000000000000000000000006101e0526101c0506101c051806101e001601f826000031636823750506308c379a06101805260206101a052601f19601f6101c051011660440161019cfd5b67016345785d8a000060443511156101fd57600c6101c0527f46656520746f6f206869676800000000000000000000000000000000000000006101e0526101c0506101c051806101e001601f826000031636823750506308c379a06101805260206101a052601f19601f6101c051011660440161019cfd5b620f4240604435101561027057600b6101c0527f46656520746f6f206c6f770000000000000000000000000000000000000000006101e0526101c0506101c051806101e001601f826000031636823750506308c379a06101805260206101a052601f19601f6101c051011660440161019cfd5b670de0b6b3a763ffff60643511156102e85760126101c0527f41646d696e2066656520746f6f206869676800000000000000000000000000006101e0526101c0506101c051806101e001601f826000031636823750506308c379a06101805260206101a052601f19601f6101c051011660440161019cfd5b662386f26fc1000060e435101561035f57601c6101c0527f4c69717569646174696f6e20646973636f756e7420746f6f206c6f77000000006101e0526101c0506101c051806101e001601f826000031636823750506308c379a06101805260206101a052601f19601f6101c051011660440161019cfd5b6706f05b59d3b2000060c43511156103d75760166101c0527f4c6f616e20646973636f756e7420746f6f2068696768000000000000000000006101e0526101c0506101c051806101e001601f826000031636823750506308c379a06101805260206101a052601f19601f6101c051011660440161019cfd5b60e43560c4351161046d5760276101c0527f6e656564206c6f616e5f646973636f756e743e6c69717569646174696f6e5f646101e0527f6973636f756e7400000000000000000000000000000000000000000000000000610200526101c0506101c051806101e001601f826000031636823750506308c379a06101805260206101a052601f19601f6101c051011660440161019cfd5b6101a05163e91f2f4c6101c05260206101c060046101dc6000855af1610498573d600060003e3d6000fd5b60203d10611780576101c050506101805163a035b1fe6101e05260206101e060046101fc845afa6104ce573d600060003e3d6000fd5b60203d10611780576101e09050516101c0526101c05115611780576101c0516101805163ceb7f7596101e05260206101e060046101fc6000855af1610518573d600060003e3d6000fd5b60203d10611780576101e09050511861178057602435670de0b6b3a7640000810281670de0b6b3a764000082041861178057905060243560018103818111611780579050801561178057808204905090506101e052620186a45460206117926000396000516102c0526102c05161042052602061179260003960005163313ce567610220526020610220600461023c845afa6105b9573d600060003e3d6000fd5b60203d10611780576102209050518060120360128111611780579050604d81116117805780600a0a90506102e0526102e05161044052610160516103005261030051610460526101605163313ce567610260526020610260600461027c845afa610628573d600060003e3d6000fd5b60203d10611780576102609050518060120360128111611780579050604d81116117805780600a0a905061032052610320516104805260243561034052610340516104a0526101e051670de0b6b3a7640000810281670de0b6b3a76400008204186117805790508060b57101000000000000000000000000000000000082106106b8578160801c91508060401b90505b690100000000000000000082106106d6578160401c91508060201b90505b6501000000000082106106f0578160201c91508060101b90505b63010000008210610708578160101c91508060081b90505b620100008201810260121c9050808184040160011c9050808184040160011c9050808184040160011c9050808184040160011c9050808184040160011c9050808184040160011c9050808184040160011c9050808304808281188284100218905090509050905061036052610360516104c0526101e05160405261078d6102a06113a3565b6102a05161038052610380516104e0526101c0516103a0526103a051610500526044356103c0526103c051610520526064356103e0526103e05161054052610180516104005261040051610560526101606003823b0359600182126117805781600382863c81810183818561042060045afa5050828201816000f0801561178057905090509050905061020052620186a3546101605161024052610240516102e0526101a05161026052610260516103005260c43561028052610280516103205260e4356102a0526102a05161034052610200516102c0526102c0516103605260a06003823b0359600182126117805781600382863c8181018381856102e060045afa5050828201816000f08015611780579050905090509050610220526102005163e9333fab610240526102205161026052803b15611780576000610240602461025c6000855af16108e5573d600060003e3d6000fd5b5061022051604052610104356060526001608052610901611537565b620186a55461024052610160516102405161c34f811161178057620186a6015560006103e8905b8061026052620249f6610160516020526000526040600020610260516103e781116117805781019050546109b2576102405180700100000000000000000000000000000000017001000000000000000000000000000000008110611780579050620249f6610160516020526000526040600020610260516103e78111611780578101905055610a54565b6103e76102605118610a49576028610280527f546f6f206d616e7920636f6e74726f6c6c65727320666f722073616d6520636f6102a0527f6c6c61746572616c0000000000000000000000000000000000000000000000006102c0526102805061028051806102a001601f826000031636823750506308c379a061024052602061026052601f19601f61028051011660440161025cfd5b600101818118610928575b5050610220516102405161c34f81116117805760010155610200516102405161c34f81116117805761c35101556102405160018101818110611780579050620186a555610160517febbe0dfde9dde641808b7a803882653420f3a5b12bb405d238faed959e1e3aa3610220516102605261020051610280526101a0516102a052610240516102c0526080610260a26102205161026052610200516102805260406102606003600055f35b6331dc3ca88118610b9f5760043610611780576000604052620186a554606052600061c350905b8060805260605160805118610b3957610b97565b60405160805161c34f811161178057600101546331dc3ca860a052602060a0600460bc845afa610b6e573d600060003e3d6000fd5b60203d106117805760a09050518082018281106117805790509050604052600101818118610b25575b505060206040f35b63f44102368118610bbc5760243610611780576000606052610bd6565b636bbd5ec78118610c3a5760443610611780576024356060525b6004358060a01c61178057604052620249f660405160205260005260406000206060516103e78111611780578101905054700100000000000000000000000000000000810381811161178057905061c34f8111611780576001015460805260206080f35b63b12d54608118610c575760243610611780576000606052610c71565b631539838f8118610cd65760443610611780576024356060525b6004358060a01c61178057604052620249f660405160205260005260406000206060516103e78111611780578101905054700100000000000000000000000000000000810381811161178057905061c34f81116117805761c351015460805260206080f35b639af8f23c8118610d785760443610611780576004358060a01c611780576040526024358060a01c61178057606052600054600214611780576002600055620186a15433186117805760405115611780576060511561178057604051620186a355606051620186a4557f1694b0703640754583177bb0c9e8d97e4d163cd89d08ae426ef8cb3f4710954260605160805260405160a05260406080a16003600055005b63e9333fab8118610dee5760243610611780576004358060a01c61178057604052600054600214611780576002600055620186a154331861178057604051620186a1557f5a272403b402d892977df56625f4164ccaf70ca3863991c43ecfe76a6905b0a160405160605260206060a16003600055005b63e41ab7718118610e6c5760243610611780576004358060a01c61178057604052600054600214611780576002600055620186a1543318611780576040511561178057604051620186a2557fffb40bfdfd246e95f543d08d9713c339f1d90fa9265e39b4f562f9011d7c919f60405160605260206060a16003600055005b63b933c50a8118610ec95760443610611780576004358060a01c6117805761016052600054600214611780576002600055620186a154331861178057610160516040526024356060526001608052610ec2611537565b6003600055005b632651990f8118610f2c5760243610611780576004358060a01c611780576101605260005460021461178057600260005561016051604052620249f7610160516020526000526040600020546060526000608052610f25611537565b6003600055005b63df068aba81186111815760243610611780576004358060a01c61178057604052600054600214611780576002600055620186a154331861178057620249f8604051602052600052604060002054606052620249f760405160205260005260406000205415610f9c576001610fa2565b60605115155b15611780576040516331dc3ca860a052602060a0600460bc845afa610fcc573d600060003e3d6000fd5b60203d106117805760a090505160405163e231bff060e052602060e0600460fc845afa610ffe573d600060003e3d6000fd5b60203d106117805760e09050518082018281106117805790509050604051634f02c420610120526020610120600461013c845afa611041573d600060003e3d6000fd5b60203d1061178057610120905051808203828111611780579050905060805260206117926000396000516370a0823160c05260405160e052602060c0602460dc845afa611093573d600060003e3d6000fd5b60203d106117805760c090505160a05260a05160805111156111475760805160a051808203828111611780579050905060c05260206117926000396000516340c10f1960e0526040516101005260c05161012052602060e0604460fc6000855af1611103573d600060003e3d6000fd5b60203d106117805760e0518060011c6117805761014052610140505060605160c0518082018281106117805790509050620249f86040516020526000526040600020555b604051631e0cfcef60c052602060c0600460dc6000855af161116e573d600060003e3d6000fd5b60203d106117805760c050506003600055005b63e94b0dd281186111ad57602436106117805760043561c34f8111611780576001015460405260206040f35b6386a8cdbc81186111da57602436106117805760043561c34f81116117805761c351015460405260206040f35b63f851a44081186111fb576004361061178057620186a15460405260206040f35b63cab4d3db811861121c576004361061178057620186a25460405260206040f35b630275417e811861123d576004361061178057620186a35460405260206040f35b633bc5799f811861125e576004361061178057620186a45460405260206040f35b6312397fa1811861127f576004361061178057620186a55460405260206040f35b6324c1173b81186112ad57602436106117805760043561c34f811161178057620186a6015460405260206040f35b63a736726881186112fa5760443610611780576004358060a01c61178057604052620249f660405160205260005260406000206024356103e7811161178057810190505460605260206060f35b63602b62d481186113375760243610611780576004358060a01c61178057604052620249f760405160205260005260406000205460605260206060f35b63c92696b281186113745760243610611780576004358060a01c61178057604052620249f860405160205260005260406000205460605260206060f35b63ad5c4648811861139b57600436106117805760206117b260003960005160405260206040f35b505b60006000fd5b604051606052600060805260006008905b8060a05260a051806007036007811161178057905060ff8111611780578060020a905060c05260c05160ff8111611780578060020a905060e05260e051670de0b6b3a7640000810281670de0b6b3a7640000820418611780579050606051106114635760605160e0518015611780578082049050905060605260805160c051670de0b6b3a7640000810281670de0b6b3a764000082041861178057905080820182811061178057905090506080525b6001018181186113b4575050670de0b6b3a764000060a0526000603b905b8060c052671bc16d674ec80000606051106114ba5760805160a05180820182811061178057905090506080526060518060011c90506060525b6060516060518082028115838383041417156117805790509050670de0b6b3a76400008104905060605260a0518060011c905060a052600101818118611481575050608051670de0b6b3a7640000810281670de0b6b3a76400008204186117805790506714057b7ef7678100810490508060ff1c61178057815250565b620249f860405160205260005260406000205460a05260a051606051111561160f5760605160a051808203828111611780579050905060c05260206117926000396000516340c10f1960e0526040516101005260c05161012052602060e0604460fc6000855af16115ad573d600060003e3d6000fd5b60203d106117805760e0518060011c61178057610140526101405050606051620249f86040516020526000526040600020556040517fad17aca0dc59a6d96350f71e2732094471c65b5a5cecd8f95b376edcd5534cc960c05160e052602060e0a25b60a05160605110156117305760a051606051808203828111611780579050905060206117926000396000516370a0823160e05260405161010052602060e0602460fc845afa611663573d600060003e3d6000fd5b60203d106117805760e09050518082811882841002189050905060c05260206117926000396000516379cc679060e0526040516101005260c05161012052602060e0604460fc6000855af16116bd573d600060003e3d6000fd5b60203d106117805760e0518060011c6117805761014052610140505060a05160c0518082038281116117805790509050620249f86040516020526000526040600020556040517fb21604369d32a00404a085ea01ab0a3f6b63f8a0ebda770e25695572416d9bcf60c05160e052602060e0a25b6080511561177e57606051620249f76040516020526000526040600020556040517f22d26e5448456e0d2368bca46b2c824717b39390656f1c6314237e11d691e4f260605160c052602060c0a25b565b600080fda165767970657283000307000b000000000000000000000000f939e0a03fb07f59a73314e73794be0e57ac1b4e000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
Verified Source Code Partial Match
Compiler: v0.3.7+commit.6020b8bb
EVM: paris
crvUSDControllerFactory.vy 351 lines
# @version 0.3.7
"""
@title crvUSD ControllerFactory
@author Curve.Fi
@license Copyright (c) Curve.Fi, 2020-2023 - all rights reserved
"""
interface ERC20:
def mint(_to: address, _value: uint256) -> bool: nonpayable
def burnFrom(_to: address, _value: uint256) -> bool: nonpayable
def balanceOf(_user: address) -> uint256: view
def decimals() -> uint256: view
interface PriceOracle:
def price() -> uint256: view
def price_w() -> uint256: nonpayable
interface AMM:
def set_admin(_admin: address): nonpayable
interface Controller:
def total_debt() -> uint256: view
def minted() -> uint256: view
def redeemed() -> uint256: view
def collect_fees() -> uint256: nonpayable
interface MonetaryPolicy:
def rate_write() -> uint256: nonpayable
event AddMarket:
collateral: indexed(address)
controller: address
amm: address
monetary_policy: address
ix: uint256
event SetDebtCeiling:
addr: indexed(address)
debt_ceiling: uint256
event MintForMarket:
addr: indexed(address)
amount: uint256
event RemoveFromMarket:
addr: indexed(address)
amount: uint256
event SetImplementations:
amm: address
controller: address
event SetAdmin:
admin: address
event SetFeeReceiver:
fee_receiver: address
MAX_CONTROLLERS: constant(uint256) = 50000
STABLECOIN: immutable(ERC20)
controllers: public(address[MAX_CONTROLLERS])
amms: public(address[MAX_CONTROLLERS])
admin: public(address)
fee_receiver: public(address)
controller_implementation: public(address)
amm_implementation: public(address)
n_collaterals: public(uint256)
collaterals: public(address[MAX_CONTROLLERS])
collaterals_index: public(HashMap[address, uint256[1000]])
debt_ceiling: public(HashMap[address, uint256])
debt_ceiling_residual: public(HashMap[address, uint256])
# Limits
MIN_A: constant(uint256) = 2
MAX_A: constant(uint256) = 10000
MIN_FEE: constant(uint256) = 10**6 # 1e-12, still needs to be above 0
MAX_FEE: constant(uint256) = 10**17 # 10%
MAX_ADMIN_FEE: constant(uint256) = 10**18 # 100%
MAX_LOAN_DISCOUNT: constant(uint256) = 5 * 10**17
MIN_LIQUIDATION_DISCOUNT: constant(uint256) = 10**16
WETH: public(immutable(address))
@external
def __init__(stablecoin: ERC20,
admin: address,
fee_receiver: address,
weth: address):
"""
@notice Factory which creates both controllers and AMMs from blueprints
@param stablecoin Stablecoin address
@param admin Admin of the factory (ideally DAO)
@param fee_receiver Receiver of interest and admin fees
@param weth Address of WETH contract address
"""
STABLECOIN = stablecoin
self.admin = admin
self.fee_receiver = fee_receiver
WETH = weth
@internal
@pure
def ln_int(_x: uint256) -> int256:
"""
@notice Logarithm ln() function based on log2. Not very gas-efficient but brief
"""
# adapted from: https://medium.com/coinmonks/9aef8515136e
# and vyper log implementation
# This can be much more optimal but that's not important here
x: uint256 = _x
res: uint256 = 0
for i in range(8):
t: uint256 = 2**(7 - i)
p: uint256 = 2**t
if x >= p * 10**18:
x /= p
res += t * 10**18
d: uint256 = 10**18
for i in range(59): # 18 decimals: math.log2(10**10) == 59.7
if (x >= 2 * 10**18):
res += d
x /= 2
x = x * x / 10**18
d /= 2
# Now res = log2(x)
# ln(x) = log2(x) / log2(e)
return convert(res * 10**18 / 1442695040888963328, int256)
## End of low-level math
@external
@view
def stablecoin() -> ERC20:
return STABLECOIN
@internal
def _set_debt_ceiling(addr: address, debt_ceiling: uint256, update: bool):
"""
@notice Set debt ceiling for a market
@param addr Controller address
@param debt_ceiling Value for stablecoin debt ceiling
@param update Whether to actually update the debt ceiling (False is used for burning the residuals)
"""
old_debt_residual: uint256 = self.debt_ceiling_residual[addr]
if debt_ceiling > old_debt_residual:
to_mint: uint256 = debt_ceiling - old_debt_residual
STABLECOIN.mint(addr, to_mint)
self.debt_ceiling_residual[addr] = debt_ceiling
log MintForMarket(addr, to_mint)
if debt_ceiling < old_debt_residual:
diff: uint256 = min(old_debt_residual - debt_ceiling, STABLECOIN.balanceOf(addr))
STABLECOIN.burnFrom(addr, diff)
self.debt_ceiling_residual[addr] = old_debt_residual - diff
log RemoveFromMarket(addr, diff)
if update:
self.debt_ceiling[addr] = debt_ceiling
log SetDebtCeiling(addr, debt_ceiling)
@external
@nonreentrant('lock')
def add_market(token: address, A: uint256, fee: uint256, admin_fee: uint256,
_price_oracle_contract: address,
monetary_policy: address, loan_discount: uint256, liquidation_discount: uint256,
debt_ceiling: uint256) -> address[2]:
"""
@notice Add a new market, creating an AMM and a Controller from a blueprint
@param token Collateral token address
@param A Amplification coefficient; one band size is 1/A
@param fee AMM fee in the market's AMM
@param admin_fee AMM admin fee
@param _price_oracle_contract Address of price oracle contract for this market
@param monetary_policy Monetary policy for this market
@param loan_discount Loan discount: allowed to borrow only up to x_down * (1 - loan_discount)
@param liquidation_discount Discount which defines a bad liquidation threshold
@param debt_ceiling Debt ceiling for this market
@return (Controller, AMM)
"""
assert msg.sender == self.admin, "Only admin"
assert A >= MIN_A and A <= MAX_A, "Wrong A"
assert fee <= MAX_FEE, "Fee too high"
assert fee >= MIN_FEE, "Fee too low"
assert admin_fee < MAX_ADMIN_FEE, "Admin fee too high"
assert liquidation_discount >= MIN_LIQUIDATION_DISCOUNT, "Liquidation discount too low"
assert loan_discount <= MAX_LOAN_DISCOUNT, "Loan discount too high"
assert loan_discount > liquidation_discount, "need loan_discount>liquidation_discount"
MonetaryPolicy(monetary_policy).rate_write() # Test that MonetaryPolicy has correct ABI
p: uint256 = PriceOracle(_price_oracle_contract).price() # This also validates price oracle ABI
assert p > 0
assert PriceOracle(_price_oracle_contract).price_w() == p
A_ratio: uint256 = 10**18 * A / (A - 1)
amm: address = create_from_blueprint(
self.amm_implementation,
STABLECOIN.address, 10**(18 - STABLECOIN.decimals()),
token, 10**(18 - ERC20(token).decimals()), # <- This validates ERC20 ABI
A, isqrt(A_ratio * 10**18), self.ln_int(A_ratio),
p, fee, admin_fee, _price_oracle_contract,
code_offset=3)
controller: address = create_from_blueprint(
self.controller_implementation,
token, monetary_policy, loan_discount, liquidation_discount, amm,
code_offset=3)
AMM(amm).set_admin(controller)
self._set_debt_ceiling(controller, debt_ceiling, True)
N: uint256 = self.n_collaterals
self.collaterals[N] = token
for i in range(1000):
if self.collaterals_index[token][i] == 0:
self.collaterals_index[token][i] = 2**128 + N
break
assert i != 999, "Too many controllers for same collateral"
self.controllers[N] = controller
self.amms[N] = amm
self.n_collaterals = N + 1
log AddMarket(token, controller, amm, monetary_policy, N)
return [controller, amm]
@external
@view
def total_debt() -> uint256:
"""
@notice Sum of all debts across controllers
"""
total: uint256 = 0
n_collaterals: uint256 = self.n_collaterals
for i in range(MAX_CONTROLLERS):
if i == n_collaterals:
break
total += Controller(self.controllers[i]).total_debt()
return total
@external
@view
def get_controller(collateral: address, i: uint256 = 0) -> address:
"""
@notice Get controller address for collateral
@param collateral Address of collateral token
@param i Iterate over several controllers for collateral if needed
"""
return self.controllers[self.collaterals_index[collateral][i] - 2**128]
@external
@view
def get_amm(collateral: address, i: uint256 = 0) -> address:
"""
@notice Get AMM address for collateral
@param collateral Address of collateral token
@param i Iterate over several amms for collateral if needed
"""
return self.amms[self.collaterals_index[collateral][i] - 2**128]
@external
@nonreentrant('lock')
def set_implementations(controller: address, amm: address):
"""
@notice Set new implementations (blueprints) for controller and amm. Doesn't change existing ones
@param controller Address of the controller blueprint
@param amm Address of the AMM blueprint
"""
assert msg.sender == self.admin
assert controller != empty(address)
assert amm != empty(address)
self.controller_implementation = controller
self.amm_implementation = amm
log SetImplementations(amm, controller)
@external
@nonreentrant('lock')
def set_admin(admin: address):
"""
@notice Set admin of the factory (should end up with DAO)
@param admin Address of the admin
"""
assert msg.sender == self.admin
self.admin = admin
log SetAdmin(admin)
@external
@nonreentrant('lock')
def set_fee_receiver(fee_receiver: address):
"""
@notice Set fee receiver who earns interest (DAO)
@param fee_receiver Address of the receiver
"""
assert msg.sender == self.admin
assert fee_receiver != empty(address)
self.fee_receiver = fee_receiver
log SetFeeReceiver(fee_receiver)
@external
@nonreentrant('lock')
def set_debt_ceiling(_to: address, debt_ceiling: uint256):
"""
@notice Set debt ceiling of the address - mint the token amount given for it
@param _to Address to allow borrowing for
@param debt_ceiling Maximum allowed to be allowed to mint for it
"""
assert msg.sender == self.admin
self._set_debt_ceiling(_to, debt_ceiling, True)
@external
@nonreentrant('lock')
def rug_debt_ceiling(_to: address):
"""
@notice Remove stablecoins above the debt ceiling from the address and burn them
@param _to Address to remove stablecoins from
"""
self._set_debt_ceiling(_to, self.debt_ceiling[_to], False)
@external
@nonreentrant('lock')
def collect_fees_above_ceiling(_to: address):
"""
@notice If the receiver is the controller - increase the debt ceiling if it's not enough to claim admin fees
and claim them
@param _to Address of the controller
"""
assert msg.sender == self.admin
old_debt_residual: uint256 = self.debt_ceiling_residual[_to]
assert self.debt_ceiling[_to] > 0 or old_debt_residual > 0
admin_fees: uint256 = Controller(_to).total_debt() + Controller(_to).redeemed() - Controller(_to).minted()
b: uint256 = STABLECOIN.balanceOf(_to)
if admin_fees > b:
to_mint: uint256 = admin_fees - b
STABLECOIN.mint(_to, to_mint)
self.debt_ceiling_residual[_to] = old_debt_residual + to_mint
Controller(_to).collect_fees()
Read Contract
WETH 0xad5c4648 → address
admin 0xf851a440 → address
amm_implementation 0x3bc5799f → address
amms 0x86a8cdbc → address
collaterals 0x24c1173b → address
collaterals_index 0xa7367268 → uint256
controller_implementation 0x0275417e → address
controllers 0xe94b0dd2 → address
debt_ceiling 0x602b62d4 → uint256
debt_ceiling_residual 0xc92696b2 → uint256
fee_receiver 0xcab4d3db → address
get_amm 0xb12d5460 → address
get_amm 0x1539838f → address
get_controller 0xf4410236 → address
get_controller 0x6bbd5ec7 → address
n_collaterals 0x12397fa1 → uint256
stablecoin 0xe9cbd822 → address
total_debt 0x31dc3ca8 → uint256
Write Contract 7 functions
These functions modify contract state and require a wallet transaction to execute.
add_market 0x8a82f1fe
address token
uint256 A
uint256 fee
uint256 admin_fee
address _price_oracle_contract
address monetary_policy
uint256 loan_discount
uint256 liquidation_discount
uint256 debt_ceiling
returns: address[2]
collect_fees_above_ceiling 0xdf068aba
address _to
rug_debt_ceiling 0x2651990f
address _to
set_admin 0xe9333fab
address admin
set_debt_ceiling 0xb933c50a
address _to
uint256 debt_ceiling
set_fee_receiver 0xe41ab771
address fee_receiver
set_implementations 0x9af8f23c
address controller
address amm
Recent Transactions
No transactions found for this address