DODO 文档中心

监听合约事件

DODO平台的合约在操作过程中会触发某些事件。其中,较常见的事件包括创建流动性池、代币交换等。

创建流动性池事件#

DODO平台目前支持的流动性池类型有DODO V1标准池、DODO V2单币池、DODO V2做市商池和DODO V2锚定池。这四种类型的池子通过对应的工厂合约的执行来创建,并触发创建事件,如下所示:

DODO V1标准池#

对应的工厂合约名称为DODO Zoo,第三方平台需要监听的事件有:

event DODOBirth(address newBorn, address baseToken, address quoteToken);

其中,newBorn是DODO V1标准池的合约地址。

DODO V2单币池#

对应的工厂合约名称为DODO Vending Machine Factory,第三方平台需要监听的事件有:

event NewDVM(
    address baseToken,
    address quoteToken,
    address creator,
    address dvm
);

其中,dvm是DODO V2单币池的合约地址,creator是创建池子的账户。

DODO V2做市商池#

对应的工厂合约名称为DODO Private Pool Factory,第三方平台需要监听的事件有:

event NewDPP(
     address baseToken,
     address quoteToken,
     address creator,
     address dpp
);

其中,dpp是DODO V2做市商池的合约地址,creator是创建池子的账户。

DODO V2锚定池#

对应的工厂合约名称为DODO Stable Pool Factory,第三方平台需要监听的事件有:

event NewDSP(
     address baseToken, 
     address quoteToken, 
     address creator, 
     address DSP
);

其中,dsp是DODO V2锚定池的合约地址,creator是创建池子的账户。

注意:上述提到的DODO Zoo、DODO Vending Machine Factory、DODO Private Pool Factory和DODO Stable Pool Factory合约可以通过在相应网络下查询合约地址获取。所有这些合约都是开源的,可以直接在区块链浏览器中获取。

流动性池交易事件#

不同类型的池子可以通过DODO自身的路由和外部聚合器进行聚合,也可以直接调用进行交易。每个交易都会触发一个事件,第三方平台可以通过这些事件来统计池子的交易量。对于DODO V1标准池和DODO V2池子(包括单币池、做市商池和锚定池),需要监听的事件有所不同。

DODO V1标准池#

第三方平台需要获取相应池子地址并监听以下事件:

event SellBaseToken(
    address indexed seller, 
    uint256 payBase, 
    uint256 receiveQuote
);

event BuyBaseToken(
    address indexed buyer, 
    uint256 receiveBase, 
    uint256 payQuote
);

有两种不同的事件,根据是购买池子中的哪种代币而执行。

SellBaseToken表示将BaseToken卖给池子并购买QuoteToken

payBase表示支付的BaseToken数量,receiveQuote表示收到的QuoteToken数量。

BuyBaseToken表示将QuoteToken卖给池子并购买BaseToken

payQuote表示支付的QuoteToken数量,receiveBase表示收到的BaseToken数量。

DODO V2池子#

第三方平台需要获取相应池子地址并监听以下事件:

event DODOSwap(
     address fromToken,
     address toToken,
     uint256 fromAmount,
     uint256 toAmount,
     address trader,
     address receiver
 );

DODO V2池子的交易事件统一为DODOSwap。其中,fromToken是卖出的代币地址,toToken是买入的代币地址,fromAmount表示卖出的代币数量,toAmount表示买入的代币数量,trader是交易执行者,receiver是接收买入代币的目标账户。