DODO 文档中心

盈利分享指南

Widget 分红指南

背景#

为了奖励交易量提供者,API用户可以调整交易手续费收款地址和手续费比例。用户通过提供者发布的小部件进行交易后,提供者将获得相应的手续费奖励。

使用盈利分享模式#

描述

feeRate: API用户的手续费比例;API用户设置的feeRate与DODO收取的手续费单独计算,手续费单位为1e18,例如,如果feeRate设置为1500000000000000,实际手续费率为1500000000000000 / 10^18 = 0.0015 = 0.15%。rebateTo:将接收交易手续费激励的钱包地址。

⚠️注意:如果要使用盈利分享模式,这两组代码对于小部件来说是必需的。如果这些代码未处理,feeRate默认为0, 默认API用户将不会收取任何交易手续费。

使用React函数#

import { SwapWidget } from '@dodoex/widgets';

function App() {
    return (
        <SwapWidget
            feeRate={1500000000000000}
            rebateTo='0x2Ba1633338dDD2Ab37fbc95ea615BA98f0445380'
            // ...otherPrpos
        />
    )
}

使用非React函数#

/**
 * main.js
 * InitializeSwapWidget
*/

'use strict';
import { InitSwapWidget } from '@dodoex/widgets';

function initDodoWidget() {
  InitSwapWidget({
    feeRate: 1500000000000000,
    rebateTo: '0x2Ba1633338dDD2Ab37fbc95ea615BA98f0445380',
    // ...otherPrpos
  });
}

initDodoWidget();

手续费计算-合约代码块#

function _routeWithdraw(
        address toToken,
        uint256 receiveAmount,
        bytes memory feeData,
        uint256 minReturnAmount
    ) internal {
        (address broker, uint256 brokerFeeRate) = abi.decode(feeData, (address, uint256));

        uint256 routeFee = DecimalMath.mulFloor(receiveAmount, routeFeeRate);
        IERC20(toToken).universalTransfer(payable(routeFeeReceiver), routeFee);

        uint256 brokerFee = DecimalMath.mulFloor(receiveAmount, brokerFeeRate);
        IERC20(toToken).universalTransfer(payable(broker), brokerFee);
        
        receiveAmount = receiveAmount - routeFee - brokerFee;
        require(receiveAmount >= minReturnAmount, "DODORouteProxy: Return amount is not enough");
        
        if (toToken == _ETH_ADDRESS_) {
            IWETH(_WETH_).withdraw(receiveAmount);
            payable(msg.sender).transfer(receiveAmount);
        } else {
            IERC20(toToken).universalTransfer(payable(msg.sender), receiveAmount);
        }
    }

正如上面所示,在获取准确的路由报价时,向用户显示的toAmount已经扣除了交易手续费。

盈利分享手续费显示#

报价模块#

根据上述合约,在报价阶段的toAmount(即示例图中的DODO数量)已经扣除了API用户的feeRate后的代币数。

交易明细示例#

基本费用:服务提供商(DODO)的费用;额外费用:小部件用户(feeRate)的附加费用;