交互合约:D3MMFactory
调用方法:breedDODO,做市商提供maker账户(用以设置价格)及poolCreator账户(用以充值资金),初始心跳时间(uint256)
备注:需要DODO官方来创建
/// @notice Create new D3MM pool and maker, and register to vault
/// @param poolCreator Pool owner
/// @param maker Maker owner
/// @param maxInterval Maximum interval for heartbeat detection.
/// @param poolType Pool template type.
/// @return newPool New pool address
function breedD3Pool(
address poolCreator,
address maker,
uint256 maxInterval,
uint256 poolType
) external onlyOwner returns (address newPool) {
做市商充值。需要做市商充值后才能进行交易或向vault借款操作,
交互合约:D3MM
调用方法:makerDeposit
function makerDeposit(address token) external
// 该方法无权限限制,谁都可以调用。仅支持充值D3Oracle中有报价的资产
// 充值分为两步骤:
// 1. 做市商将token转入池子
// 2. 调用该方法更新做市商余额,将刚刚转入的token数目记账到做市商头上
// 上述两步骤应该在一笔transaction里完成,不然有被抢跑的风险,充值的token被记到攻击者账本上
// 建议使用multicall,或者做市商自己写合约方法来合并上述两个步骤
// 也可以使用我们的D3Proxy来充值
通过 D3Proxy 充值
通过 D3Proxy 充值可以将转入token和记账一步完成。D3Proxy也可以将ETH自动转换为WETH
交互合约:D3Proxy
调用方法:makerDeposit
注:需要授权dodoApprove
/// @notice Pool owner deposit token into pool
/// @param pool The address of pool
/// @param token The address of token
/// @param amount The amount of token
function makerDeposit(address pool, address token, uint256 amount) external payable {
随后设置对应token流动性参数后即可使用。