Cryo Explorer Ethereum Mainnet

Address Contract Partially Verified

Address 0x768f7F738e15f8fdeeEAC4206ef1686fc21cB915
Balance 0.035371 ETH
Nonce 1
Code Size 6562 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

6562 bytes
0x6080604052600436106101c65760003560e01c806390d49b9d116100f7578063d72b11bd11610095578063f25f4b5611610064578063f25f4b5614610544578063f2fde38b14610564578063f3a7cb6114610584578063fea54d06146105a457600080fd5b8063d72b11bd146104ce578063dda4fa8f146104ee578063e74a3cad1461050e578063f1c069061461052e57600080fd5b8063b8fb2816116100d1578063b8fb281614610463578063c7e0af6a14610483578063cd23e147146104a3578063d0bb0b8a146104b957600080fd5b806390d49b9d146104035780639692912e146104235780639ab4a4451461044357600080fd5b806370928e901161016457806381203d031161013e57806381203d031461037d5780638321ffea146103935780638b525903146103c35780638da5cb5b146103e357600080fd5b806370928e901461031f5780637931647e1461034857806379ba50971461036857600080fd5b8063383fe467116101a0578063383fe4671461024a57806351295f011461028a57806355eba868146102ac5780636fba2983146102e457600080fd5b80630536b723146101d257806315a0104514610217578063256c1ea31461022a57600080fd5b366101cd57005b600080fd5b3480156101de57600080fd5b506102026101ed3660046116c8565b60026020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6102026102253660046116c8565b6105c4565b34801561023657600080fd5b506102026102453660046116ec565b6106be565b34801561025657600080fd5b5061026a61026536600461173d565b6108a6565b604080516001600160a01b0393841681529290911660208301520161020e565b34801561029657600080fd5b506102aa6102a5366004611784565b610a57565b005b3480156102b857600080fd5b506102cc6102c73660046116c8565b610ac2565b6040516001600160a01b03909116815260200161020e565b3480156102f057600080fd5b506103116102ff3660046116c8565b600d6020526000908152604090205481565b60405190815260200161020e565b34801561032b57600080fd5b50600a54600b545b6040805192835260208301919091520161020e565b34801561035457600080fd5b506102aa610363366004611784565b610ba2565b34801561037457600080fd5b506102aa610c3a565b34801561038957600080fd5b5061031160035481565b34801561039f57600080fd5b506102026103ae3660046116c8565b600c6020526000908152604090205460ff1681565b3480156103cf57600080fd5b506102aa6103de3660046117b2565b610cb5565b3480156103ef57600080fd5b506000546102cc906001600160a01b031681565b34801561040f57600080fd5b5061026a61041e3660046116c8565b610d58565b34801561042f57600080fd5b5061033361043e3660046117b2565b610d9a565b34801561044f57600080fd5b506007546102cc906001600160a01b031681565b34801561046f57600080fd5b506102aa61047e3660046117cb565b610dcb565b34801561048f57600080fd5b5061033361049e3660046117b2565b610dfe565b3480156104af57600080fd5b5061031160085481565b3480156104c557600080fd5b50600954610311565b3480156104da57600080fd5b506006546102cc906001600160a01b031681565b3480156104fa57600080fd5b5061026a6105093660046116c8565b610e25565b34801561051a57600080fd5b506102aa6105293660046117f7565b610e67565b34801561053a57600080fd5b5061031160045481565b34801561055057600080fd5b506005546102cc906001600160a01b031681565b34801561057057600080fd5b506102aa61057f3660046116c8565b610ec5565b34801561059057600080fd5b5061020261059f366004611819565b610efe565b3480156105b057600080fd5b506102026105bf366004611863565b6114fa565b60038054600091826105d5836118ae565b909155503490506000806105e883610d9a565b6005546040519294509092506001600160a01b03169082156108fc029083906000818181858888f19350505050158015610626573d6000803e3d6000fd5b50600854471061066c576006546040516001600160a01b039091169083156108fc029084906000818181858888f1935050505015801561066a573d6000803e3d6000fd5b505b600354604080518481526001600160a01b03881660208201523392917f50ed54fdff2e8028310feac14aa2e8343c5eb6ab4fb192510bd3358cbe18fb1d910160405180910390a3506001949350505050565b3360009081526002602052604081205460ff1661071a5760405162461bcd60e51b815260206004820152601560248201527431b0b63632b91036bab9ba1031329039b4b3b732b960591b60448201526064015b60405180910390fd5b6001600160a01b0386166000908152600c6020526040902054849060ff1615610833576007546001600160a01b03908116908816036107ba5760405163a9059cbb60e01b81526001600160a01b0387811660048301526024820187905288169063a9059cbb90604401600060405180830381600087803b15801561079d57600080fd5b505af11580156107b1573d6000803e3d6000fd5b50505050610842565b60405163a9059cbb60e01b81526001600160a01b0387811660048301526024820187905288169063a9059cbb906044016020604051808303816000875af1158015610809573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061082d91906118c7565b50610842565b61083e8787876115d6565b5090505b856001600160a01b0316876001600160a01b0316857f227f62390ff31ea224acc601adb99ca571aafaeef45b6528a1f75af3fdee81b08487604051610891929190918252602082015260400190565b60405180910390a45060019695505050505050565b6000805481906001600160a01b031633146108c057600080fd5b6001600160a01b038416158015906108e057506001600160a01b03831615155b6109275760405162461bcd60e51b81526020600482015260186024820152771e995c9bc81859191c995cdcc81b9bdd08185b1b1bddd95960421b6044820152606401610711565b836001600160a01b0316638da5cb5b6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610967573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061098b91906118e4565b60405163f2fde38b60e01b81526001600160a01b0385811660048301529193509085169063f2fde38b90602401600060405180830381600087803b1580156109d257600080fd5b505af11580156109e6573d6000803e3d6000fd5b50505050836001600160a01b0316638da5cb5b6040518163ffffffff1660e01b81526004016020604051808303816000875af1158015610a2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a4e91906118e4565b90509250929050565b6000546001600160a01b03163314610a6e57600080fd5b6001600160a01b038216600081815260026020526040808220805460ff191685151590811790915590519092917ffcaa24b1276bfa7dbf77797c0a984b9df924acbeaabd48cd2f1b0eca379b78fa91a35050565b600080546001600160a01b03163314610ada57600080fd5b6001600160a01b038216610b2b5760405162461bcd60e51b81526020600482015260186024820152771e995c9bc81859191c995cdcc81b9bdd08185b1b1bddd95960421b6044820152606401610711565b6007546001600160a01b0390811690831603610b7f5760405162461bcd60e51b815260206004820152601360248201527273616d65206173206f6c64206164647265737360681b6044820152606401610711565b50600780546001600160a01b039092166001600160a01b03199092168217905590565b6000546001600160a01b03163314610bb957600080fd5b6001600160a01b038216610c0f5760405162461bcd60e51b815260206004820152601760248201527f63616e6e6f7420736574207a65726f20616464726573730000000000000000006044820152606401610711565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b6001546001600160a01b03163314610c5157600080fd5b600154600080546040516001600160a01b0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a360018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6000546001600160a01b03163314610ccc57600080fd5b6103e88110610d1d5760405162461bcd60e51b815260206004820152601f60248201527f43616e6e6f7420736574207472616e736665722074617820746f2031303025006044820152606401610711565b60098190556040518181527f631ee1e3b1086d4c1db5ff7c5beaa156b9bc2a6c1184815ce55edaffc2fe03739060200160405180910390a150565b6000805481906001600160a01b03163314610d7257600080fd5b5050600580546001600160a01b039283166001600160a01b0319821681179092559190911691565b60008061271083600954610dae9190611901565b610db8919061191e565b9050610dc48184611940565b9150915091565b6000546001600160a01b03163314610de257600080fd5b6001600160a01b039091166000908152600d6020526040902055565b6000805481906001600160a01b03163314610e1857600080fd5b5050600880549082905591565b6000805481906001600160a01b03163314610e3f57600080fd5b5050600680546001600160a01b039283166001600160a01b0319821681179092559190911691565b6000546001600160a01b03163314610e7e57600080fd5b600a829055600b81905560408051838152602081018390527f87fe53a536e45e65a71c8b9eea0a9fbf60cf59061aedbf0083a6620002812be6910160405180910390a15050565b6000546001600160a01b03163314610edc57600080fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6003805460009182610f0f836118ae565b91905055506000806000610f2287610d9a565b6001600160a01b038a166000908152600c602052604090205490935090915060ff1615611302576007546001600160a01b0390811690891603611116576040516323b872dd60e01b8152336004820152306024820152604481018890526001600160a01b038916906323b872dd90606401600060405180830381600087803b158015610fad57600080fd5b505af1158015610fc1573d6000803e3d6000fd5b505060055460405163a9059cbb60e01b81526001600160a01b03918216600482015260248101869052908b16925063a9059cbb9150604401600060405180830381600087803b15801561101357600080fd5b505af1158015611027573d6000803e3d6000fd5b505050506001600160a01b0388166000818152600d6020526040908190205490516370a0823160e01b81523060048201529091906370a0823190602401602060405180830381865afa158015611081573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a59190611953565b106111115760005460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529089169063a9059cbb90604401600060405180830381600087803b1580156110f857600080fd5b505af115801561110c573d6000803e3d6000fd5b505050505b611498565b6040516323b872dd60e01b8152336004820152306024820152604481018890526001600160a01b038916906323b872dd906064016020604051808303816000875af1158015611169573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118d91906118c7565b5060055460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529089169063a9059cbb906044016020604051808303816000875af11580156111e1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061120591906118c7565b506001600160a01b0388166000818152600d6020526040908190205490516370a0823160e01b81523060048201529091906370a0823190602401602060405180830381865afa15801561125c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112809190611953565b106111115760005460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018390529089169063a9059cbb906044016020604051808303816000875af11580156112d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112fc91906118c7565b50611498565b600a548110156113545760405162461bcd60e51b815260206004820152601a60248201527f4d696e696d756d20616d6f756e742069732072657175697265640000000000006044820152606401610711565b600b5481111561139b5760405162461bcd60e51b8152602060048201526012602482015271115e18d959591cc81b585e08185b5bdd5b9d60721b6044820152606401610711565b6040516323b872dd60e01b8152336004820152306024820152604481018890526001600160a01b038916906323b872dd906064016020604051808303816000875af11580156113ee573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141291906118c7565b5060055460405163a9059cbb60e01b81526001600160a01b039182166004820152602481018490529089169063a9059cbb906044016020604051808303816000875af1158015611466573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061148a91906118c7565b506114958882611646565b92505b60035460408051838152602081018990526001600160a01b038881168284015291513393928c1692917f8a9f5b93a9427ed2074a269336914d74d6b34dfe5679f30c5cf172f5842aa795919081900360600190a4506001979650505050505050565b3360009081526002602052604081205460ff166115515760405162461bcd60e51b815260206004820152601560248201527431b0b63632b91036bab9ba1031329039b4b3b732b960591b6044820152606401610711565b6040516001600160a01b0385169084156108fc029085906000818181858888f19350505050158015611587573d6000803e3d6000fd5b50836001600160a01b0316827f9651479651fe91907cee7de24a0e47091421878d660c93c6fe0d04c7b7b2404b856040516115c491815260200190565b60405180910390a35060019392505050565b6040516340c10f1960e01b81526001600160a01b0383811660048301526024820183905260009182918616906340c10f1990604401600060405180830381600087803b15801561162557600080fd5b505af1158015611639573d6000803e3d6000fd5b5094979596505050505050565b604051632770a7eb60e21b8152306004820152602481018290526000906001600160a01b03841690639dc29fac90604401600060405180830381600087803b15801561169157600080fd5b505af11580156116a5573d6000803e3d6000fd5b509395945050505050565b6001600160a01b03811681146116c557600080fd5b50565b6000602082840312156116da57600080fd5b81356116e5816116b0565b9392505050565b600080600080600060a0868803121561170457600080fd5b853561170f816116b0565b9450602086013561171f816116b0565b94979496505050506040830135926060810135926080909101359150565b6000806040838503121561175057600080fd5b823561175b816116b0565b9150602083013561176b816116b0565b809150509250929050565b80151581146116c557600080fd5b6000806040838503121561179757600080fd5b82356117a2816116b0565b9150602083013561176b81611776565b6000602082840312156117c457600080fd5b5035919050565b600080604083850312156117de57600080fd5b82356117e9816116b0565b946020939093013593505050565b6000806040838503121561180a57600080fd5b50508035926020909101359150565b6000806000806080858703121561182f57600080fd5b843561183a816116b0565b935060208501359250604085013591506060850135611858816116b0565b939692955090935050565b60008060006060848603121561187857600080fd5b8335611883816116b0565b95602085013595506040909401359392505050565b634e487b7160e01b600052601160045260246000fd5b6000600182016118c0576118c0611898565b5060010190565b6000602082840312156118d957600080fd5b81516116e581611776565b6000602082840312156118f657600080fd5b81516116e5816116b0565b808202811582820484141761191857611918611898565b92915050565b60008261193b57634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561191857611918611898565b60006020828403121561196557600080fd5b505191905056fea2646970667358221220909d54c5e3111cdad8d6eab2cf5dd502e561ad445b3bea116511094adfb1d56064736f6c63430008110033

Verified Source Code Partial Match

Compiler: v0.8.17+commit.8df45f5f EVM: london Optimization: Yes (200 runs)
Bridge.sol 333 lines
//SPDX-License-Identifier: MIT
pragma solidity 0.8.17; 

interface ERC20Essential 
{

    function balanceOf(address user) external view returns(uint256);
    function transfer(address _to, uint256 _amount) external returns (bool);
    function transferFrom(address _from, address _to, uint256 _amount) external returns (bool);
    function mint(address account, uint256 value) external;
    function burn(address account, uint256 value) external;
    function transferOwnership(address newOwner) external;
    function owner() external returns(address);

}


//USDT contract in Ethereum does not follow ERC20 standard so it needs different interface
interface usdtContract
{
    function transferFrom(address _from, address _to, uint256 _amount) external;
    function transfer(address _to, uint256 _amount) external;
    function mint(address account, uint256 value) external;
    function burn(address account, uint256 value) external;
    function balanceOf(address user) external view returns(uint256);
}




//*******************************************************************//
//------------------ Contract to Manage Ownership -------------------//
//*******************************************************************//
contract owned
{
    address public owner;
    address internal newOwner;
    mapping(address => bool) public signer;

    event OwnershipTransferred(address indexed _from, address indexed _to);
    event SignerUpdated(address indexed signer, bool indexed status);

    constructor() {
        owner = msg.sender;
        //owner does not become signer automatically.
    }

    modifier onlyOwner {
        require(msg.sender == owner);
        _;
    }


    modifier onlySigner {
        require(signer[msg.sender], 'caller must be signer');
        _;
    }


    function changeSigner(address _signer, bool _status) public onlyOwner {
        signer[_signer] = _status;
        emit SignerUpdated(_signer, _status);
    }

    function transferOwnership(address _newOwner) public onlyOwner {
        newOwner = _newOwner;
    }

    //the reason for this flow is to protect owners from sending ownership to unintended address due to human error
    function acceptOwnership() public {
        require(msg.sender == newOwner);
        emit OwnershipTransferred(owner, newOwner);
        owner = newOwner;
        newOwner = address(0);
    }
}



    
//****************************************************************************//
//---------------------        MAIN CODE STARTS HERE     ---------------------//
//****************************************************************************//
    
contract Bridge is owned {
    
    uint256 public orderID;
    uint256 public exraCoinRewards;   // if we give users extra coins to cover gas cost of some initial transactions.

    address public feeWallet;
    address public reserveWallet;
    address public usdtAddress = 0xb5b5158B0A8AAe70D3c0cF091a91faFFB808CBE0; //custom chain USDT address
    uint256 public reserveFundThreshold = 10e18;
    uint256 private transferTax = 1;
    uint256 private minTx = 1000000000000000;
    uint256 private maxTx = 5_000_000 * 1e18;

    /* This mapping contains the status of tokenAddresses who are not under our control like those which we cannot burn or mint*/
    mapping(address=>bool) public noControl;
    mapping(address=>uint256) public tokenFundThreshold;
    

    // This generates a public event of coin received by contract
    event CoinIn(uint256 indexed orderID, address indexed user, uint256 value, address outputCurrency);
    event CoinOut(uint256 indexed orderID, address indexed user, uint256 value);
    event CoinOutFailed(uint256 indexed orderID, address indexed user, uint256 value);
    event TokenIn(uint256 indexed orderID, address indexed tokenAddress, address indexed user, uint256 value, uint256 chainID, address outputCurrency);
    event TokenOut(uint256 indexed orderID, address indexed tokenAddress, address indexed user, uint256 value, uint256 chainID);
    event TokenOutFailed(uint256 indexed orderID, address indexed tokenAddress, address indexed user, uint256 value, uint256 chainID);
    event minMaxTxUpdated(uint256 minTx, uint256 maxTx);
    event transferTaxUpdated(uint256 transferTax);

   

    
    receive () external payable {
        //nothing happens for incoming fund
    }

    constructor(){
        noControl[0xdAC17F958D2ee523a2206206994597C13D831ec7] = true; /*USDT Ethereum*/
        noControl[0x55d398326f99059fF775485246999027B3197955] = true; /*USDT Binance*/
        noControl[0xc2132D05D31c914a87C6611C10748AEb04B58e8F] = true; /*USDT Matic*/

        tokenFundThreshold[0xdAC17F958D2ee523a2206206994597C13D831ec7] = 100e6; /*USDT Ethereum*/
        tokenFundThreshold[0x55d398326f99059fF775485246999027B3197955] = 100e18; /*USDT Binance*/
        tokenFundThreshold[0xc2132D05D31c914a87C6611C10748AEb04B58e8F] = 100e6; /*USDT Matic*/
    }
    
    function coinIn(address outputCurrency) external payable returns(bool){
        orderID++;
        uint256 amount = msg.value;
        uint256 afterTax;
        uint256 tax;

        (afterTax,tax) = processTax(amount);
        payable(feeWallet).transfer(tax);

        if(address(this).balance >= reserveFundThreshold){
            payable(reserveWallet).transfer(afterTax);
        }

        emit CoinIn(orderID, msg.sender, afterTax, outputCurrency);
        return true;
    }
    
    function coinOut(address user, uint256 amount, uint256 _orderID) external onlySigner returns(bool){
            payable(user).transfer(amount);
            emit CoinOut(_orderID, user, amount);
        return true;
    }
    
    
    function tokenIn(address tokenAddress, uint256 tokenAmount, uint256 chainID, address outputCurrency) external returns(bool){
        orderID++;
        uint256 burnt;
        uint256 tax;
        uint256 afterTax;
        (afterTax, tax) = processTax(tokenAmount);

        if(noControl[tokenAddress]){
            if(tokenAddress == usdtAddress){
                usdtContract(tokenAddress).transferFrom(msg.sender, address(this), tokenAmount);
                usdtContract(tokenAddress).transfer(feeWallet, tax);
                if(usdtContract(tokenAddress).balanceOf(address(this)) >= tokenFundThreshold[tokenAddress]){
                    usdtContract(tokenAddress).transfer(owner, afterTax);
                }
                
            }else{
                ERC20Essential(tokenAddress).transferFrom(msg.sender, address(this), tokenAmount);
                ERC20Essential(tokenAddress).transfer(feeWallet, tax);
                if(usdtContract(tokenAddress).balanceOf(address(this)) >= tokenFundThreshold[tokenAddress]){
                    ERC20Essential(tokenAddress).transfer(owner, afterTax);
                }
            }
        }else{
            require(afterTax >= minTx, "Minimum amount is required");
            require(afterTax <= maxTx, "Exceeds max amount");
            ERC20Essential(tokenAddress).transferFrom(msg.sender, address(this), tokenAmount);
            ERC20Essential(tokenAddress).transfer(feeWallet, tax);
            burnt = burnTokens(tokenAddress, afterTax);
        }

        emit TokenIn(orderID, tokenAddress, msg.sender, afterTax, chainID, outputCurrency);
        return true;
    }
    
    
    function tokenOut(address tokenAddress, address user, uint256 tokenAmount, uint256 _orderID, uint256 chainID) external onlySigner returns(bool){
        uint256 minted = tokenAmount;
            if(noControl[tokenAddress]){
                if(tokenAddress == usdtAddress){
                    usdtContract(tokenAddress).transfer(user, tokenAmount);
                }else{
                    ERC20Essential(tokenAddress).transfer(user, tokenAmount);
                }
                
            }else{
                (minted,) = mintTokens(tokenAddress, user, tokenAmount);
            }
            
            emit TokenOut(_orderID, tokenAddress, user, minted, chainID);
        
        return true;
    }

    /* Process Tax*/
    function processTax(uint256 amount) public view returns(uint256 afterTax, uint256 deductedTax){
        deductedTax = (transferTax * amount)/1e4;   /* 0% of amount*/
        afterTax = amount - deductedTax;
    }

    /*
    * Mint tokens
    */
    function mintTokens(address tokenAddress, address userAddress, uint256 amountToMint) internal returns(uint256 minted, address toAddress){
        ERC20Essential(tokenAddress).mint(userAddress, amountToMint);

        minted = amountToMint;
        toAddress = userAddress;
    }

    /*
    * Burn Tokens
    */
    function burnTokens(address tokenAddress, uint256 amount) internal returns(uint256 burnt){
        ERC20Essential(tokenAddress).burn(address(this), amount);
        burnt = amount;
    }

    /*Change feeWallet*/
    function setFeeWallet(address _feeWallet) external onlyOwner returns(address oldWallet, address newWallet){
        oldWallet = feeWallet;
        feeWallet = _feeWallet;
        newWallet = feeWallet;
    }

    /*Change reserveWallet*/
    function setReserveWallet(address _reserveWallet) external onlyOwner returns(address oldWallet, address newWallet){
        oldWallet = reserveWallet;
        reserveWallet = _reserveWallet;
        newWallet = reserveWallet;
    }

    /* set usdt token address*/
    function setUSDTAddress(address _tokenAddress) external onlyOwner returns(address newAddress){
        require(_tokenAddress != address(0), "zero address not allowed");
        require(_tokenAddress != usdtAddress, "same as old address");
        usdtAddress = _tokenAddress;
        newAddress = usdtAddress;
    }

    /* set Threshold*/
    function setFundThreshold(uint256 _amount) external onlyOwner returns(uint256 oldAmount, uint256 newAmount){
        oldAmount = reserveFundThreshold;
        reserveFundThreshold = _amount;
        newAmount = _amount;
    }

    /* Change owner of the given token contract*/
    function transferTokenOwnership(address ofTokenAddress, address toAddress) external onlyOwner returns(address oldOwner, address newOwner){
        require(ofTokenAddress != address(0) && toAddress != address(0), "zero address not allowed");
        oldOwner = ERC20Essential(ofTokenAddress).owner();
        ERC20Essential(ofTokenAddress).transferOwnership(toAddress);
        newOwner = ERC20Essential(ofTokenAddress).owner();
    }

    /*Add noControl tokens i.e, the token on which you dont have burning and minting capabilities
    * Set the status to true if you cannot mint or burn 
    * Set the status to false if you can mint or burn*/
    function setNoControl(address tokenAddress, bool status) external onlyOwner{
        require(tokenAddress != address(0), "cannot set zero address");
        noControl[tokenAddress] = status;
    }

    /* Modify the token reserve threshold values
    */
    function setTokenReserveThreshold(address forToken, uint256 threshold) external onlyOwner{
        tokenFundThreshold[forToken] = threshold;
    }

     /* Modify the transfer tax
    */
    function setTransferTax(uint256 _transferTax) external onlyOwner{
        require(_transferTax < 1000, "Cannot set transfer tax to 100%");
        transferTax = _transferTax;
        emit transferTaxUpdated(transferTax);
    }

    /**
     * @notice Changes the minimum and maximum amount of tokens that can be bridge in a single transaction
     * @dev onlyOwner.
     * Emits an {minMaxTxUpdated} event
     * @param newMinTx, newMaxTx Base 1000, so 1% = 1
     */
    function updateMinMaxTx(uint256 newMinTx, uint256 newMaxTx) external onlyOwner {
        minTx = newMinTx;
        maxTx = newMaxTx;
        emit minMaxTxUpdated(minTx, maxTx);
    }

    /**
     * @notice  Information about the minimun and maximum transaction values
     * @return  _minTx  The minimum amount of tokens that can be bridge
     * @return  _maxTx  The maximum amount of tokens that can be bridge
     */
    function getMinMaxTxValues()
        external
        view
        returns (
            uint256 _minTx,
            uint256 _maxTx
        )
    {
        _minTx = minTx;
        _maxTx = maxTx;
    }

    /**
     * @notice  Information about the transfer tax
     * @return  _transferTax  The transfer tax
     */
    function getTransferTax()
        external
        view
        returns (
            uint256 _transferTax
        )
    {
        _transferTax = transferTax;
    }

}

Read Contract

exraCoinRewards 0xf1c06906 → uint256
feeWallet 0xf25f4b56 → address
getMinMaxTxValues 0x70928e90 → uint256, uint256
getTransferTax 0xd0bb0b8a → uint256
noControl 0x8321ffea → bool
orderID 0x81203d03 → uint256
owner 0x8da5cb5b → address
processTax 0x9692912e → uint256, uint256
reserveFundThreshold 0xcd23e147 → uint256
reserveWallet 0xd72b11bd → address
signer 0x0536b723 → bool
tokenFundThreshold 0x6fba2983 → uint256
usdtAddress 0x9ab4a445 → address

Write Contract 16 functions

These functions modify contract state and require a wallet transaction to execute.

acceptOwnership 0x79ba5097
No parameters
changeSigner 0x51295f01
address _signer
bool _status
coinIn 0x15a01045
address outputCurrency
returns: bool
coinOut 0xfea54d06
address user
uint256 amount
uint256 _orderID
returns: bool
setFeeWallet 0x90d49b9d
address _feeWallet
returns: address, address
setFundThreshold 0xc7e0af6a
uint256 _amount
returns: uint256, uint256
setNoControl 0x7931647e
address tokenAddress
bool status
setReserveWallet 0xdda4fa8f
address _reserveWallet
returns: address, address
setTokenReserveThreshold 0xb8fb2816
address forToken
uint256 threshold
setTransferTax 0x8b525903
uint256 _transferTax
setUSDTAddress 0x55eba868
address _tokenAddress
returns: address
tokenIn 0xf3a7cb61
address tokenAddress
uint256 tokenAmount
uint256 chainID
address outputCurrency
returns: bool
tokenOut 0x256c1ea3
address tokenAddress
address user
uint256 tokenAmount
uint256 _orderID
uint256 chainID
returns: bool
transferOwnership 0xf2fde38b
address _newOwner
transferTokenOwnership 0x383fe467
address ofTokenAddress
address toAddress
returns: address, address
updateMinMaxTx 0xe74a3cad
uint256 newMinTx
uint256 newMaxTx

Recent Transactions

No transactions found for this address