监听合约事件
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
是接收买入代币的目标账户。