false
true
0

Contract Address Details

0xe2AC858c675a3eD81aB8042EB62Cb81CD34C5878

Contract Name
Utilities
Creator
0xeb59b0–dcef7f at 0x7830c4–33cec1
Balance
0 PLS ( )
Tokens
Fetching tokens...
Transactions
0 Transactions
Transfers
0 Transfers
Gas Used
Fetching gas used...
Last Balance Update
26061548
Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
Contract name:
Utilities




Optimization enabled
true
Compiler version
v0.8.20+commit.a1b79de6




Optimization runs
200
EVM Version
paris




Verified at
2025-08-15T06:07:18.475008Z

contracts/Utilities.sol

//SPDX-License-Identifier: MIT
pragma solidity 0.8.20;

interface IDEXRouter {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function WPLS() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);

    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);

    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);

    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

    function swapExactETHForTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable returns (uint256[] memory amounts);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

    function getAmountsOut(uint256 amountIn, address[] calldata path) external view returns (uint256[] memory amounts);
}

interface IDEXPair {
    event Approval(address indexed owner, address indexed spender, uint256 value);
    event Transfer(address indexed from, address indexed to, uint256 value);

    function name() external pure returns (string memory);

    function symbol() external pure returns (string memory);

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

    function balanceOf(address owner) external view returns (uint256);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 value) external returns (bool);

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(address from, address to, uint256 value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint256);

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;

    event Mint(address indexed sender, uint256 amount0, uint256 amount1);
    event Burn(address indexed sender, uint256 amount0, uint256 amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function mint(address to) external returns (uint256 liquidity);

    function burn(address to) external returns (uint256 amount0, uint256 amount1);

    function swap(uint256 amount0Out, uint256 amount1Out, address to, bytes calldata data) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

interface IDEXFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
}

/**
 * Standard SafeMath, stripped down to just add/sub/mul/div
 */
library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }
}

interface ILPTOKEN {
    function burn(uint256 amount) external;
}

interface INetworkProposal {
    function isAdmin(address adminAddress) external view returns (bool);
    function admin() external view returns (address);
    function getVoters() external view returns (address[] memory);
}

interface VPLSMinter {
    function deposit() external payable;
    function minDeposit() external returns (uint256);
}

interface IWPLS {
    function deposit() external payable;
    function withdraw(uint wad) external;
}

interface IVPLS {
    function burn(uint256 amount) external;
}

interface IVouch {
    function totalSupply() external view returns (uint256);
    function burn(uint256 amount) external;
}

interface IDaoDistributor {
    function setDistributionCriteria(
        uint256 _minVouchPeriod,
        uint256 _minVouchDistribution,
        uint256 _minVplsPeriod,
        uint256 _minVplsDistribution,
        uint256 _minPlsPeriod,
        uint256 _minPlsDistribution
    ) external;

    function setDistributionThresholds(
        uint256 _vouchForDistributionThreshold,
        uint256 _vplsForDistributionThreshold,
        uint256 _plsForDistributionThreshold,
        uint256 _swapThresholdForTokens,
        uint256 _plsSendThreshold,
        uint256 _liquidityDistributionThreshold
    ) external;

    function setDistributionAmounts(
        uint256[9] calldata feeParams
    ) external;

    function setVouchRewards(
        uint256 _vouchHoldersPercent,
        uint256 _validatorsPercent,
        uint256 _votersPercent,
        uint256 _stakersPercent,
        uint256 _burnPercent
    ) external;

    function setVplsRewards(
        uint256 _vouchHoldersPercent,
        uint256 _validatorsPercent,
        uint256 _votersPercent,
        uint256 _stakersPercent,
        uint256 _burnPercent
    ) external;

    function setPlsRewards(
        uint256 _vouchHoldersPercent,
        uint256 _validatorsPercent,
        uint256 _votersPercent,
        uint256 _stakersPercent
    ) external;

    function setRecipientAddresses(
        address _validators,
        address _masterValidator,
        address _feePool,
        address _safu,
        address _daoTreasury,
        address _voters,
        address _stakers
    ) external;

    function setDistributorSettings(uint256 _vouchGas, uint256 _vplsGas, uint256 _plsGas) external;

    function setShare(address shareholder, uint256 amount) external;

    function processVouch(uint256 gas) external;

    function processVpls(uint256 gas) external;
    
    function processPls(uint256 gas) external;

    function claimDividend() external;

    function getUnpaidVouchEarnings(address shareholder) external view returns (uint256);

    function getUnpaidVplsEarnings(address shareholder) external view returns (uint256);
    
    function getUnpaidPlsEarnings(address shareholder) external view returns (uint256);

    function setVouchAddress(address _vouchAddress) external;

    function depositFromVouch() external payable;

    function depositFromValidators() external payable;
}

library Utilities {
    address public constant pulseRouterV1Address = 0x98bf93ebf5c380C0e6Ae8e192A7e2AE08edAcc02;
    address public constant pulseRouterV2Address = 0x165C3410fC91EF562C50559f7d2289fEbed552d9;
    address public constant nineinchRouterAddress = 0xeB45a3c4aedd0F47F345fB4c8A1802BB5740d725;

    function getBestRouter(uint256 amountIn, address[] memory path) public view returns (address bestRouter) {
        address[] memory routers = new address[](3);
        routers[0] = pulseRouterV1Address;
        routers[1] = pulseRouterV2Address;
        routers[2] = nineinchRouterAddress;

        uint256 bestAmountOut = 0;
        bestRouter = pulseRouterV2Address;

        for (uint256 i = 0; i < routers.length; i++) {
            try IDEXRouter(routers[i]).getAmountsOut(amountIn, path) returns (uint256[] memory amountsOut) {
                uint256 amountOut = amountsOut[amountsOut.length - 1];
                if (amountOut > bestAmountOut) {
                    bestAmountOut = amountOut;
                    bestRouter = routers[i];
                }
            } catch {
                continue;
            }
        }
    }
}
        

Compiler Settings

{"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"],"":["ast"]}},"optimizer":{"runs":200,"enabled":true},"libraries":{},"evmVersion":"paris"}
              

Contract ABI

[{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"bestRouter","internalType":"address"}],"name":"getBestRouter","inputs":[{"type":"uint256","name":"amountIn","internalType":"uint256"},{"type":"address[]","name":"path","internalType":"address[]"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"nineinchRouterAddress","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"pulseRouterV1Address","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"pulseRouterV2Address","inputs":[]}]
              

Contract Creation Code

0x61059861003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100565760003560e01c80636400d2fa1461005b578063903ec6c114610092578063e67b5593146100ad578063ee3b1256146100c0575b600080fd5b61007673eb45a3c4aedd0f47f345fb4c8a1802bb5740d72581565b6040516001600160a01b03909116815260200160405180910390f35b61007673165c3410fc91ef562c50559f7d2289febed552d981565b6100766100bb366004610364565b6100db565b6100767398bf93ebf5c380c0e6ae8e192a7e2ae08edacc0281565b60408051600380825260808201909252600091829190602082016060803683370190505090507398bf93ebf5c380c0e6ae8e192a7e2ae08edacc02816000815181106101295761012961041c565b60200260200101906001600160a01b031690816001600160a01b03168152505073165c3410fc91ef562c50559f7d2289febed552d9816001815181106101715761017161041c565b60200260200101906001600160a01b031690816001600160a01b03168152505073eb45a3c4aedd0f47f345fb4c8a1802bb5740d725816002815181106101b9576101b961041c565b60200260200101906001600160a01b031690816001600160a01b031681525050600073165c3410fc91ef562c50559f7d2289febed552d9925060005b82518110156102f0578281815181106102105761021061041c565b60200260200101516001600160a01b031663d06ca61f87876040518363ffffffff1660e01b8152600401610245929190610432565b600060405180830381865afa92505050801561028357506040513d6000823e601f3d908101601f191682016040526102809190810190610489565b60015b156102de57600081600183516102999190610530565b815181106102a9576102a961041c565b60200260200101519050838111156102db578093508483815181106102d0576102d061041c565b602002602001015195505b50505b806102e881610549565b9150506101f5565b50505092915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610338576103386102f9565b604052919050565b600067ffffffffffffffff82111561035a5761035a6102f9565b5060051b60200190565b6000806040838503121561037757600080fd5b8235915060208084013567ffffffffffffffff81111561039657600080fd5b8401601f810186136103a757600080fd5b80356103ba6103b582610340565b61030f565b81815260059190911b820183019083810190888311156103d957600080fd5b928401925b8284101561040d5783356001600160a01b03811681146103fe5760008081fd5b825292840192908401906103de565b80955050505050509250929050565b634e487b7160e01b600052603260045260246000fd5b6000604082018483526020604081850152818551808452606086019150828701935060005b8181101561047c5784516001600160a01b031683529383019391830191600101610457565b5090979650505050505050565b6000602080838503121561049c57600080fd5b825167ffffffffffffffff8111156104b357600080fd5b8301601f810185136104c457600080fd5b80516104d26103b582610340565b81815260059190911b820183019083810190878311156104f157600080fd5b928401925b8284101561050f578351825292840192908401906104f6565b979650505050505050565b634e487b7160e01b600052601160045260246000fd5b818103818111156105435761054361051a565b92915050565b60006001820161055b5761055b61051a565b506001019056fea2646970667358221220d187cda2a19fda8c79de3dc0ec997a8720eff7fc665888b30292d46794e53c1264736f6c63430008140033

Deployed ByteCode

0x73e2ac858c675a3ed81ab8042eb62cb81cd34c587830146080604052600436106100565760003560e01c80636400d2fa1461005b578063903ec6c114610092578063e67b5593146100ad578063ee3b1256146100c0575b600080fd5b61007673eb45a3c4aedd0f47f345fb4c8a1802bb5740d72581565b6040516001600160a01b03909116815260200160405180910390f35b61007673165c3410fc91ef562c50559f7d2289febed552d981565b6100766100bb366004610364565b6100db565b6100767398bf93ebf5c380c0e6ae8e192a7e2ae08edacc0281565b60408051600380825260808201909252600091829190602082016060803683370190505090507398bf93ebf5c380c0e6ae8e192a7e2ae08edacc02816000815181106101295761012961041c565b60200260200101906001600160a01b031690816001600160a01b03168152505073165c3410fc91ef562c50559f7d2289febed552d9816001815181106101715761017161041c565b60200260200101906001600160a01b031690816001600160a01b03168152505073eb45a3c4aedd0f47f345fb4c8a1802bb5740d725816002815181106101b9576101b961041c565b60200260200101906001600160a01b031690816001600160a01b031681525050600073165c3410fc91ef562c50559f7d2289febed552d9925060005b82518110156102f0578281815181106102105761021061041c565b60200260200101516001600160a01b031663d06ca61f87876040518363ffffffff1660e01b8152600401610245929190610432565b600060405180830381865afa92505050801561028357506040513d6000823e601f3d908101601f191682016040526102809190810190610489565b60015b156102de57600081600183516102999190610530565b815181106102a9576102a961041c565b60200260200101519050838111156102db578093508483815181106102d0576102d061041c565b602002602001015195505b50505b806102e881610549565b9150506101f5565b50505092915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610338576103386102f9565b604052919050565b600067ffffffffffffffff82111561035a5761035a6102f9565b5060051b60200190565b6000806040838503121561037757600080fd5b8235915060208084013567ffffffffffffffff81111561039657600080fd5b8401601f810186136103a757600080fd5b80356103ba6103b582610340565b61030f565b81815260059190911b820183019083810190888311156103d957600080fd5b928401925b8284101561040d5783356001600160a01b03811681146103fe5760008081fd5b825292840192908401906103de565b80955050505050509250929050565b634e487b7160e01b600052603260045260246000fd5b6000604082018483526020604081850152818551808452606086019150828701935060005b8181101561047c5784516001600160a01b031683529383019391830191600101610457565b5090979650505050505050565b6000602080838503121561049c57600080fd5b825167ffffffffffffffff8111156104b357600080fd5b8301601f810185136104c457600080fd5b80516104d26103b582610340565b81815260059190911b820183019083810190878311156104f157600080fd5b928401925b8284101561050f578351825292840192908401906104f6565b979650505050505050565b634e487b7160e01b600052601160045260246000fd5b818103818111156105435761054361051a565b92915050565b60006001820161055b5761055b61051a565b506001019056fea2646970667358221220d187cda2a19fda8c79de3dc0ec997a8720eff7fc665888b30292d46794e53c1264736f6c63430008140033