初始化

Step 1. 创建池子

交互合约: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) {

Step 2. 充值资产

做市商充值。需要做市商充值后才能进行交易或向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流动性参数后即可使用。

维护流动性