交易所繫統丨交易所繫統開發(上線版)丨交易所開發詳細原始碼部署

xiaofufu發表於2023-02-18

從技術角度來說,智慧合約可以看作一種計算機程式,這種程式可以自主地執行全部或部分和合約相關的操作,併產生相應的可以被驗證的證據,來說明執行合約操作的有效性。

function _addLiquidity(

    address tokenA,

    address tokenB,

    uint amountADesired,

    uint amountBDesired,

    uint amountAMin,

    uint amountBMin

) internal virtual returns (uint amountA, uint amountB) {

    if (IUniswapV2Factory(factory).getPair(tokenA, tokenB) == address(0)) {

        IUniswapV2Factory(factory).createPair(tokenA, tokenB);

    }

    (uint reserveA, uint reserveB) = UniswapV2Library.getReserves(factory, tokenA, tokenB);

    if (reserveA == 0 && reserveB == 0) {

        (amountA, amountB) = (amountADesired, amountBDesired);

    } else {

        uint amountBOptimal = UniswapV2Library.quote(amountADesired, reserveA, reserveB);

        if (amountBOptimal <= amountBDesired) {

            require(amountBOptimal >= amountBMin, 'UniswapV2Router: INSUFFICIENT_B_AMOUNT');

            (amountA, amountB) = (amountADesired, amountBOptimal);

        } else {

            uint amountAOptimal = UniswapV2Library.quote(amountBDesired, reserveB, reserveA);

            assert(amountAOptimal <= amountADesired);

            require(amountAOptimal >= amountAMin, 'UniswapV2Router: INSUFFICIENT_A_AMOUNT');

            (amountA, amountB) = (amountAOptimal, amountBDesired);

        }

    }

}


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69956839/viewspace-2935838/,如需轉載,請註明出處,否則將追究法律責任。

相關文章