ETH Price: $2,147.73 (-2.51%)
Gas: 0.06 Gwei

Contract

0x1B604Cca543C5Cd2cFCb04e47E86a9da1d3Fc261
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Flash Swap229654362025-07-21 5:19:59241 days ago1753075199IN
0x1B604Cca...a1d3Fc261
0.00005404 ETH0.001724642.62892012
Flash Swap229231472025-07-15 7:40:11247 days ago1752565211IN
0x1B604Cca...a1d3Fc261
0.00020417 ETH0.002077922.68990171
Flash Swap229216962025-07-15 2:48:23247 days ago1752547703IN
0x1B604Cca...a1d3Fc261
0.00006821 ETH0.002118632.74260205
Flash Swap229180712025-07-14 14:40:23248 days ago1752504023IN
0x1B604Cca...a1d3Fc261
0.00013407 ETH0.0098405312.73868389
Flash Swap229115642025-07-13 16:51:23249 days ago1752425483IN
0x1B604Cca...a1d3Fc261
0.00068017 ETH0.00268693.18484748
Flash Swap228895782025-07-10 15:08:35252 days ago1752160115IN
0x1B604Cca...a1d3Fc261
0.00219474 ETH0.00408026.09536455
Flash Swap228876032025-07-10 8:31:47252 days ago1752136307IN
0x1B604Cca...a1d3Fc261
0.00727703 ETH0.002381643.55750971
Flash Swap226438382025-06-06 6:42:11286 days ago1749192131IN
0x1B604Cca...a1d3Fc261
0.00041231 ETH0.001264891.69664004
Flash Swap226413952025-06-05 22:29:35286 days ago1749162575IN
0x1B604Cca...a1d3Fc261
0.00836907 ETH0.002407543.28967804
Flash Swap226410132025-06-05 21:12:59286 days ago1749157979IN
0x1B604Cca...a1d3Fc261
0.01 ETH0.0113053115.44801128
Flash Swap226352862025-06-05 1:56:47287 days ago1749088607IN
0x1B604Cca...a1d3Fc261
0.00077898 ETH0.000924851.20241716
Flash Swap226352812025-06-05 1:55:47287 days ago1749088547IN
0x1B604Cca...a1d3Fc261
0.0077894 ETH0.000956691.21556195
Flash Swap226334722025-06-04 19:51:35288 days ago1749066695IN
0x1B604Cca...a1d3Fc261
0.0001 ETH0.003450243.74292289

Latest 13 internal transactions

Advanced mode:
Parent Transaction Hash Method Block
From
To
Deposit229654362025-07-21 5:19:59241 days ago1753075199
0x1B604Cca...a1d3Fc261
0.00005404 ETH
Deposit229231472025-07-15 7:40:11247 days ago1752565211
0x1B604Cca...a1d3Fc261
0.00020417 ETH
Deposit229216962025-07-15 2:48:23247 days ago1752547703
0x1B604Cca...a1d3Fc261
0.00006821 ETH
Deposit229180712025-07-14 14:40:23248 days ago1752504023
0x1B604Cca...a1d3Fc261
0.00013407 ETH
Deposit229115642025-07-13 16:51:23249 days ago1752425483
0x1B604Cca...a1d3Fc261
0.00068017 ETH
Deposit228895782025-07-10 15:08:35252 days ago1752160115
0x1B604Cca...a1d3Fc261
0.00219474 ETH
Deposit228876032025-07-10 8:31:47252 days ago1752136307
0x1B604Cca...a1d3Fc261
0.00727703 ETH
Deposit226438382025-06-06 6:42:11286 days ago1749192131
0x1B604Cca...a1d3Fc261
0.00041231 ETH
Deposit226413952025-06-05 22:29:35286 days ago1749162575
0x1B604Cca...a1d3Fc261
0.00836907 ETH
Deposit226410132025-06-05 21:12:59286 days ago1749157979
0x1B604Cca...a1d3Fc261
0.01 ETH
Deposit226352862025-06-05 1:56:47287 days ago1749088607
0x1B604Cca...a1d3Fc261
0.00077898 ETH
Deposit226352812025-06-05 1:55:47287 days ago1749088547
0x1B604Cca...a1d3Fc261
0.0077894 ETH
Deposit226334722025-06-04 19:51:35288 days ago1749066695
0x1B604Cca...a1d3Fc261
0.0001 ETH
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
FlashSwap

Compiler Version
v0.5.17+commit.d19bba13

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
pragma solidity =0.5.17;
pragma experimental ABIEncoderV2;

import "./DydxFlashloanBase.sol";

contract FlashSwap is DydxFlashloanBase {
    using SafeMath for uint;

    address internal constant _solo  = 0x1E0447b19BB6EcFdAe1e4AE1694b0C3659614e4e;
    address internal constant WETH   = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
    address internal constant router = 0x72e5B0cb1099E664e044A7fD4185d3aF8965E095;

    function flashSwap(uint value, address payable currency, address token) external payable returns(uint amount) {
        require(value > 2, "require value > 2");
        if(currency == WETH && msg.value >= value)
            WETH9(currency).deposit.value(msg.value)();
        else
            TransferHelper.safeTransferFrom(currency, msg.sender, address(this), value);

        uint _amount = value.mul(10000-199).sub(10000*2).div(199);

        // Get marketId from token address
        uint256 marketId = _getMarketIdFromTokenAddress(_solo, currency);

        // Calculate repay amount (_amount + (2 wei))
        // Approve transfer from
        uint256 repayAmount = _getRepaymentAmountInternal(_amount);
        IERC20(currency).approve(_solo, repayAmount);

        // 1. Withdraw $
        // 2. Call callFunction(...)
        // 3. Deposit back $
        Actions.ActionArgs[] memory operations = new Actions.ActionArgs[](3);

        operations[0] = _getWithdrawAction(marketId, _amount);
        operations[1] = _getCallAction(abi.encode(currency, token, repayAmount));
        operations[2] = _getDepositAction(marketId, repayAmount);

        Account.Info[] memory accountInfos = new Account.Info[](1);
        accountInfos[0] = _getAccountInfo();

        ISoloMargin(_solo).operate(accountInfos, operations);

        address limitedToken = IQFRouter(router).buyback(token);
        address quotaToken = IQFRouter(router).quotaTokenOf(limitedToken);
        IQFRouter(router).claim(limitedToken, currency);
        amount = IERC20(quotaToken).balanceOf(address(this));
        IERC20(quotaToken).transfer(msg.sender, amount);
    }
    
    function callFunction(address sender, Account.Info calldata account, bytes calldata data) external {
        require(msg.sender == _solo && sender == address(this) && account.owner == address(this) && account.number == 1, "callFunction param check fail");
        address[] memory path = new address[](2);
        uint repayAmount;
        (path[0], path[1], repayAmount) = abi.decode(data, (address, address, uint));
        uint amount = IERC20(path[0]).balanceOf(address(this));
        TransferHelper.safeApprove(path[0], router, amount);
        amount = IQFRouter(router).swapExactTokensForTokens(amount, 0, path, address(this), now)[1];
        (path[0], path[1]) = (path[1], path[0]);
        TransferHelper.safeApprove(path[0], router, amount);
        amount = IQFRouter(router).swapExactTokensForTokens(amount, 0, path, address(this), now)[1];
        require(amount >= repayAmount, "Not enough funds to repay dydx loan!");
    }
}


interface IQFRouter {
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);

    function quotaTokenOf(address) external view returns(address);
    function buyback(address) external view returns(address);
    function claim(address limitedToken, address taxToken) external;
}


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

    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);
}


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


// a library for performing overflow-safe math, courtesy of DappHub (https://github.com/dapphub/ds-math)
library SafeMath {
    function add(uint x, uint y) internal pure returns (uint z) {
        require((z = x + y) >= x, "add-overflow");
    }

    function sub(uint x, uint y) internal pure returns (uint z) {
        require((z = x - y) <= x, "sub-underflow");
    }

    function sub0(uint256 a, uint256 b) internal pure returns (uint256) {
        return a > b ? a - b : 0;
    }

    function mul(uint x, uint y) internal pure returns (uint z) {
        require(y == 0 || (z = x * y) / y == x, "mul-overflow");
    }
    
    function div(uint x, uint y) internal pure returns (uint z) {
        return x / y;
    }

    function div1(uint256 a, uint256 b) internal pure returns (uint256) {
        return b == 0 ? a : a/b;
    }
}


// helper methods for interacting with ERC20 tokens and sending ETH that do not consistently return true/false
library TransferHelper {
    function safeApprove(address token, address to, uint value) internal {
        // bytes4(keccak256(bytes('approve(address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), "APPROVE_FAILED");
    }

    function safeTransfer(address token, address to, uint value) internal {
        // bytes4(keccak256(bytes('transfer(address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), "TRANSFER_FAILED");
    }

    function safeTransferFrom(address token, address from, address to, uint value) internal {
        // bytes4(keccak256(bytes('transferFrom(address,address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value));
        require(success && (data.length == 0 || abi.decode(data, (bool))), "TRANSFER_FROM_FAILED");
    }

    function safeTransferETH(address to, uint value) internal {
        (bool success,) = to.call.value(value)(new bytes(0));           // (bool success,) = to.call{value:value}(new bytes(0));
        require(success, "ETH_TRANSFER_FAILED");
    }
}

pragma solidity =0.5.17;
pragma experimental ABIEncoderV2;

//import "@openzeppelin/contracts/math/SafeMath.sol";
//import "@openzeppelin/contracts/token/ERC20/IERC20.sol";

import "./ISoloMargin.sol";

contract DydxFlashloanBase {
    //using SafeMath for uint256;

    // -- Internal Helper functions -- //

    function _getMarketIdFromTokenAddress(address _solo, address token)
        internal
        view
        returns (uint256)
    {
        ISoloMargin solo = ISoloMargin(_solo);

        uint256 numMarkets = solo.getNumMarkets();

        address curToken;
        for (uint256 i = 0; i < numMarkets; i++) {
            curToken = solo.getMarketTokenAddress(i);

            if (curToken == token) {
                return i;
            }
        }

        revert("No marketId found for provided token");
    }

    function _getRepaymentAmountInternal(uint256 amount)
        internal
        pure
        returns (uint256)
    {
        // Needs to be overcollateralize
        // Needs to provide +2 wei to be safe
        require(amount + 2 > amount, "+2 overflow");
        return amount + 2;
    }

    function _getAccountInfo() internal view returns (Account.Info memory) {
        return Account.Info({owner: address(this), number: 1});
    }

    function _getWithdrawAction(uint marketId, uint256 amount)
        internal
        view
        returns (Actions.ActionArgs memory)
    {
        return
            Actions.ActionArgs({
                actionType: Actions.ActionType.Withdraw,
                accountId: 0,
                amount: Types.AssetAmount({
                    sign: false,
                    denomination: Types.AssetDenomination.Wei,
                    ref: Types.AssetReference.Delta,
                    value: amount
                }),
                primaryMarketId: marketId,
                secondaryMarketId: 0,
                otherAddress: address(this),
                otherAccountId: 0,
                data: ""
            });
    }

    function _getCallAction(bytes memory data)
        internal
        view
        returns (Actions.ActionArgs memory)
    {
        return
            Actions.ActionArgs({
                actionType: Actions.ActionType.Call,
                accountId: 0,
                amount: Types.AssetAmount({
                    sign: false,
                    denomination: Types.AssetDenomination.Wei,
                    ref: Types.AssetReference.Delta,
                    value: 0
                }),
                primaryMarketId: 0,
                secondaryMarketId: 0,
                otherAddress: address(this),
                otherAccountId: 0,
                data: data
            });
    }

    function _getDepositAction(uint marketId, uint256 amount)
        internal
        view
        returns (Actions.ActionArgs memory)
    {
        return
            Actions.ActionArgs({
                actionType: Actions.ActionType.Deposit,
                accountId: 0,
                amount: Types.AssetAmount({
                    sign: true,
                    denomination: Types.AssetDenomination.Wei,
                    ref: Types.AssetReference.Delta,
                    value: amount
                }),
                primaryMarketId: marketId,
                secondaryMarketId: 0,
                otherAddress: address(this),
                otherAccountId: 0,
                data: ""
            });
    }
}

File 3 of 3 : ISoloMargin.sol
pragma solidity =0.5.17;
pragma experimental ABIEncoderV2;

library Account {
    enum Status {Normal, Liquid, Vapor}
    struct Info {
        address owner; // The address that owns the account
        uint256 number; // A nonce that allows a single address to control many accounts
    }
    struct Storage {
        mapping(uint256 => Types.Par) balances; // Mapping from marketId to principal
        Status status;
    }
}


library Actions {
    enum ActionType {
        Deposit, // supply tokens
        Withdraw, // borrow tokens
        Transfer, // transfer balance between accounts
        Buy, // buy an amount of some token (publicly)
        Sell, // sell an amount of some token (publicly)
        Trade, // trade tokens against another account
        Liquidate, // liquidate an undercollateralized or expiring account
        Vaporize, // use excess tokens to zero-out a completely negative account
        Call // send arbitrary data to an address
    }

    enum AccountLayout {OnePrimary, TwoPrimary, PrimaryAndSecondary}

    enum MarketLayout {ZeroMarkets, OneMarket, TwoMarkets}

    struct ActionArgs {
        ActionType actionType;
        uint256 accountId;
        Types.AssetAmount amount;
        uint256 primaryMarketId;
        uint256 secondaryMarketId;
        address otherAddress;
        uint256 otherAccountId;
        bytes data;
    }

    struct DepositArgs {
        Types.AssetAmount amount;
        Account.Info account;
        uint256 market;
        address from;
    }

    struct WithdrawArgs {
        Types.AssetAmount amount;
        Account.Info account;
        uint256 market;
        address to;
    }

    struct TransferArgs {
        Types.AssetAmount amount;
        Account.Info accountOne;
        Account.Info accountTwo;
        uint256 market;
    }

    struct BuyArgs {
        Types.AssetAmount amount;
        Account.Info account;
        uint256 makerMarket;
        uint256 takerMarket;
        address exchangeWrapper;
        bytes orderData;
    }

    struct SellArgs {
        Types.AssetAmount amount;
        Account.Info account;
        uint256 takerMarket;
        uint256 makerMarket;
        address exchangeWrapper;
        bytes orderData;
    }

    struct TradeArgs {
        Types.AssetAmount amount;
        Account.Info takerAccount;
        Account.Info makerAccount;
        uint256 inputMarket;
        uint256 outputMarket;
        address autoTrader;
        bytes tradeData;
    }

    struct LiquidateArgs {
        Types.AssetAmount amount;
        Account.Info solidAccount;
        Account.Info liquidAccount;
        uint256 owedMarket;
        uint256 heldMarket;
    }

    struct VaporizeArgs {
        Types.AssetAmount amount;
        Account.Info solidAccount;
        Account.Info vaporAccount;
        uint256 owedMarket;
        uint256 heldMarket;
    }

    struct CallArgs {
        Account.Info account;
        address callee;
        bytes data;
    }
}


library Decimal {
    struct D256 {
        uint256 value;
    }
}


library Interest {
    struct Rate {
        uint256 value;
    }

    struct Index {
        uint96 borrow;
        uint96 supply;
        uint32 lastUpdate;
    }
}


library Monetary {
    struct Price {
        uint256 value;
    }
    struct Value {
        uint256 value;
    }
}


library Storage {
    // All information necessary for tracking a market
    struct Market {
        // Contract address of the associated ERC20 token
        address token;
        // Total aggregated supply and borrow amount of the entire market
        Types.TotalPar totalPar;
        // Interest index of the market
        Interest.Index index;
        // Contract address of the price oracle for this market
        address priceOracle;
        // Contract address of the interest setter for this market
        address interestSetter;
        // Multiplier on the marginRatio for this market
        Decimal.D256 marginPremium;
        // Multiplier on the liquidationSpread for this market
        Decimal.D256 spreadPremium;
        // Whether additional borrows are allowed for this market
        bool isClosing;
    }

    // The global risk parameters that govern the health and security of the system
    struct RiskParams {
        // Required ratio of over-collateralization
        Decimal.D256 marginRatio;
        // Percentage penalty incurred by liquidated accounts
        Decimal.D256 liquidationSpread;
        // Percentage of the borrower's interest fee that gets passed to the suppliers
        Decimal.D256 earningsRate;
        // The minimum absolute borrow value of an account
        // There must be sufficient incentivize to liquidate undercollateralized accounts
        Monetary.Value minBorrowedValue;
    }

    // The maximum RiskParam values that can be set
    struct RiskLimits {
        uint64 marginRatioMax;
        uint64 liquidationSpreadMax;
        uint64 earningsRateMax;
        uint64 marginPremiumMax;
        uint64 spreadPremiumMax;
        uint128 minBorrowedValueMax;
    }

    // The entire storage state of Solo
    struct State {
        // number of markets
        uint256 numMarkets;
        // marketId => Market
        mapping(uint256 => Market) markets;
        // owner => account number => Account
        mapping(address => mapping(uint256 => Account.Storage)) accounts;
        // Addresses that can control other users accounts
        mapping(address => mapping(address => bool)) operators;
        // Addresses that can control all users accounts
        mapping(address => bool) globalOperators;
        // mutable risk parameters of the system
        RiskParams riskParams;
        // immutable risk limits of the system
        RiskLimits riskLimits;
    }
}


library Types {
    enum AssetDenomination {
        Wei, // the amount is denominated in wei
        Par // the amount is denominated in par
    }

    enum AssetReference {
        Delta, // the amount is given as a delta from the current value
        Target // the amount is given as an exact number to end up at
    }

    struct AssetAmount {
        bool sign; // true if positive
        AssetDenomination denomination;
        AssetReference ref;
        uint256 value;
    }

    struct TotalPar {
        uint128 borrow;
        uint128 supply;
    }

    struct Par {
        bool sign; // true if positive
        uint128 value;
    }

    struct Wei {
        bool sign; // true if positive
        uint256 value;
    }
}


interface ISoloMargin { //
    struct OperatorArg {
        address operator;
        bool trusted;
    }

    function ownerSetSpreadPremium(
        uint256 marketId,
        Decimal.D256 calldata spreadPremium
    ) external;

    function getIsGlobalOperator(address operator) external view returns (bool);

    function getMarketTokenAddress(uint256 marketId)
        external
        view
        returns (address);

    function ownerSetInterestSetter(uint256 marketId, address interestSetter)
        external;

    function getAccountValues(Account.Info calldata account)
        external
        view
        returns (Monetary.Value memory, Monetary.Value memory);

    function getMarketPriceOracle(uint256 marketId)
        external
        view
        returns (address);

    function getMarketInterestSetter(uint256 marketId)
        external
        view
        returns (address);

    function getMarketSpreadPremium(uint256 marketId)
        external
        view
        returns (Decimal.D256 memory);

    function getNumMarkets() external view returns (uint256);

    function ownerWithdrawUnsupportedTokens(address token, address recipient)
        external
        returns (uint256);

    function ownerSetMinBorrowedValue(Monetary.Value calldata minBorrowedValue)
        external;

    function ownerSetLiquidationSpread(Decimal.D256 calldata spread) external;

    function ownerSetEarningsRate(Decimal.D256 calldata earningsRate) external;

    function getIsLocalOperator(address owner, address operator)
        external
        view
        returns (bool);

    function getAccountPar(Account.Info calldata account, uint256 marketId)
        external
        view
        returns (Types.Par memory);

    function ownerSetMarginPremium(
        uint256 marketId,
        Decimal.D256 calldata marginPremium
    ) external;

    function getMarginRatio() external view returns (Decimal.D256 memory);

    function getMarketCurrentIndex(uint256 marketId)
        external
        view
        returns (Interest.Index memory);

    function getMarketIsClosing(uint256 marketId) external view returns (bool);

    function getRiskParams() external view returns (Storage.RiskParams memory);

    function getAccountBalances(Account.Info calldata account)
        external
        view
        returns (address[] memory, Types.Par[] memory, Types.Wei[] memory);

    function renounceOwnership() external;

    function getMinBorrowedValue() external view returns (Monetary.Value memory);

    function setOperators(OperatorArg[] calldata args) external;

    function getMarketPrice(uint256 marketId) external view returns (address);

    function owner() external view returns (address);

    function isOwner() external view returns (bool);

    function ownerWithdrawExcessTokens(uint256 marketId, address recipient)
        external
        returns (uint256);

    function ownerAddMarket(
        address token,
        address priceOracle,
        address interestSetter,
        Decimal.D256 calldata marginPremium,
        Decimal.D256 calldata spreadPremium
    ) external;

    function operate(
        Account.Info[] calldata accounts,
        Actions.ActionArgs[] calldata actions
    ) external;

    function getMarketWithInfo(uint256 marketId)
        external
        view
        returns (
            Storage.Market memory,
            Interest.Index memory,
            Monetary.Price memory,
            Interest.Rate memory
        );

    function ownerSetMarginRatio(Decimal.D256 calldata ratio) external;

    function getLiquidationSpread() external view returns (Decimal.D256 memory);

    function getAccountWei(Account.Info calldata account, uint256 marketId)
        external
        view
        returns (Types.Wei memory);

    function getMarketTotalPar(uint256 marketId)
        external
        view
        returns (Types.TotalPar memory);

    function getLiquidationSpreadForPair(
        uint256 heldMarketId,
        uint256 owedMarketId
    ) external view returns (Decimal.D256 memory);

    function getNumExcessTokens(uint256 marketId)
        external
        view
        returns (Types.Wei memory);

    function getMarketCachedIndex(uint256 marketId)
        external
        view
        returns (Interest.Index memory);

    function getAccountStatus(Account.Info calldata account)
        external
        view
        returns (uint8);

    function getEarningsRate() external view returns (Decimal.D256 memory);

    function ownerSetPriceOracle(uint256 marketId, address priceOracle) external;

    function getRiskLimits() external view returns (Storage.RiskLimits memory);

    function getMarket(uint256 marketId)
        external
        view
        returns (Storage.Market memory);

    function ownerSetIsClosing(uint256 marketId, bool isClosing) external;

    function ownerSetGlobalOperator(address operator, bool approved) external;

    function transferOwnership(address newOwner) external;

    function getAdjustedAccountValues(Account.Info calldata account)
        external
        view
        returns (Monetary.Value memory, Monetary.Value memory);

    function getMarketMarginPremium(uint256 marketId)
        external
        view
        returns (Decimal.D256 memory);

    function getMarketInterestRate(uint256 marketId)
        external
        view
        returns (Interest.Rate memory);
}

Settings
{
  "optimizer": {
    "enabled": false,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "remappings": []
}

Contract Security Audit

Contract ABI

API
[{"constant":false,"inputs":[{"internalType":"address","name":"sender","type":"address"},{"components":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"number","type":"uint256"}],"internalType":"struct Account.Info","name":"account","type":"tuple"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"callFunction","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"address payable","name":"currency","type":"address"},{"internalType":"address","name":"token","type":"address"}],"name":"flashSwap","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"payable":true,"stateMutability":"payable","type":"function"}]

608060405234801561001057600080fd5b50612599806100206000396000f3fe6080604052600436106100295760003560e01c8063074805861461002e5780638b4187131461005e575b600080fd5b610048600480360361004391908101906118be565b610087565b60405161005591906121c6565b60405180910390f35b34801561006a57600080fd5b50610085600480360361008091908101906117bf565b610737565b005b6000600284116100cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100c390612106565b60405180910390fd5b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561011b5750833410155b15610186578273ffffffffffffffffffffffffffffffffffffffff1663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b15801561016857600080fd5b505af115801561017c573d6000803e3d6000fd5b5050505050610193565b61019283333087610cb0565b5b60006101d160c76101c3614e206101b56126498a610dea90919063ffffffff16565b610e4c90919063ffffffff16565b610e9c90919063ffffffff16565b905060006101f3731e0447b19bb6ecfdae1e4ae1694b0c3659614e4e86610eb0565b9050600061020083611062565b90508573ffffffffffffffffffffffffffffffffffffffff1663095ea7b3731e0447b19bb6ecfdae1e4ae1694b0c3659614e4e836040518363ffffffff1660e01b8152600401610251929190612046565b602060405180830381600087803b15801561026b57600080fd5b505af115801561027f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506102a3919081019061186c565b50606060036040519080825280602002602001820160405280156102e157816020015b6102ce611440565b8152602001906001900390816102c65790505b5090506102ee83856110b4565b816000815181106102fb57fe5b602002602001018190525061033287878460405160200161031e93929190611f86565b60405160208183030381529060405261116d565b8160018151811061033f57fe5b60200260200101819052506103548383611217565b8160028151811061036157fe5b6020026020010181905250606060016040519080825280602002602001820160405280156103a957816020015b6103966114ac565b81526020019060019003908161038e5790505b5090506103b46112d0565b816000815181106103c157fe5b6020026020010181905250731e0447b19bb6ecfdae1e4ae1694b0c3659614e4e73ffffffffffffffffffffffffffffffffffffffff1663a67a6a4582846040518363ffffffff1660e01b815260040161041b92919061206f565b600060405180830381600087803b15801561043557600080fd5b505af1158015610449573d6000803e3d6000fd5b5050505060007372e5b0cb1099e664e044a7fd4185d3af8965e09573ffffffffffffffffffffffffffffffffffffffff1663fb3e6f29896040518263ffffffff1660e01b815260040161049c9190611f6b565b60206040518083038186803b1580156104b457600080fd5b505afa1580156104c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506104ec9190810190611747565b905060007372e5b0cb1099e664e044a7fd4185d3af8965e09573ffffffffffffffffffffffffffffffffffffffff1663fbc98cbf836040518263ffffffff1660e01b815260040161053d9190611f6b565b60206040518083038186803b15801561055557600080fd5b505afa158015610569573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061058d9190810190611747565b90507372e5b0cb1099e664e044a7fd4185d3af8965e09573ffffffffffffffffffffffffffffffffffffffff166321c0b342838c6040518363ffffffff1660e01b81526004016105de929190611fe6565b600060405180830381600087803b1580156105f857600080fd5b505af115801561060c573d6000803e3d6000fd5b505050508073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016106499190611f6b565b60206040518083038186803b15801561066157600080fd5b505afa158015610675573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506106999190810190611895565b97508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb338a6040518363ffffffff1660e01b81526004016106d6929190611fbd565b602060405180830381600087803b1580156106f057600080fd5b505af1158015610704573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610728919081019061186c565b50505050505050509392505050565b731e0447b19bb6ecfdae1e4ae1694b0c3659614e4e73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480156107b157503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156107fa57503073ffffffffffffffffffffffffffffffffffffffff168360000160206107e2919081019061171e565b73ffffffffffffffffffffffffffffffffffffffff16145b801561080a575060018360200135145b610849576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084090612166565b60405180910390fd5b6060600260405190808252806020026020018201604052801561087b5781602001602082028038833980820191505090505b5090506000838361088f9190810190611770565b829250819150846000815181106108a257fe5b60200260200101856001815181106108b657fe5b602002602001018295508373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152508373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050505060008260008151811061093257fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016109729190611f6b565b60206040518083038186803b15801561098a57600080fd5b505afa15801561099e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109c29190810190611895565b90506109f7836000815181106109d457fe5b60200260200101517372e5b0cb1099e664e044a7fd4185d3af8965e09583611309565b7372e5b0cb1099e664e044a7fd4185d3af8965e09573ffffffffffffffffffffffffffffffffffffffff166338ed17398260008630426040518663ffffffff1660e01b8152600401610a4d9594939291906121e1565b600060405180830381600087803b158015610a6757600080fd5b505af1158015610a7b573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250610aa4919081019061182b565b600181518110610ab057fe5b6020026020010151905082600181518110610ac757fe5b602002602001015183600081518110610adc57fe5b602002602001015184600081518110610af157fe5b6020026020010185600181518110610b0557fe5b602002602001018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152508273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505050610ba183600081518110610b7e57fe5b60200260200101517372e5b0cb1099e664e044a7fd4185d3af8965e09583611309565b7372e5b0cb1099e664e044a7fd4185d3af8965e09573ffffffffffffffffffffffffffffffffffffffff166338ed17398260008630426040518663ffffffff1660e01b8152600401610bf79594939291906121e1565b600060405180830381600087803b158015610c1157600080fd5b505af1158015610c25573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250610c4e919081019061182b565b600181518110610c5a57fe5b6020026020010151905081811015610ca7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9e906120c6565b60405180910390fd5b50505050505050565b600060608573ffffffffffffffffffffffffffffffffffffffff166323b872dd868686604051602401610ce59392919061200f565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610d339190611f54565b6000604051808303816000865af19150503d8060008114610d70576040519150601f19603f3d011682016040523d82523d6000602084013e610d75565b606091505b5091509150818015610da35750600081511480610da2575080806020019051610da1919081019061186c565b5b5b610de2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd990612146565b60405180910390fd5b505050505050565b600080821480610e075750828283850292508281610e0457fe5b04145b610e46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3d906120a6565b60405180910390fd5b92915050565b6000828284039150811115610e96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8d90612126565b60405180910390fd5b92915050565b6000818381610ea757fe5b04905092915050565b60008083905060008173ffffffffffffffffffffffffffffffffffffffff1663295c39a56040518163ffffffff1660e01b815260040160206040518083038186803b158015610efe57600080fd5b505afa158015610f12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f369190810190611895565b9050600080600090505b82811015611020578373ffffffffffffffffffffffffffffffffffffffff1663062bd3e9826040518263ffffffff1660e01b8152600401610f8191906121c6565b60206040518083038186803b158015610f9957600080fd5b505afa158015610fad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610fd19190810190611747565b91508573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611013578094505050505061105c565b8080600101915050610f40565b506040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105390612186565b60405180910390fd5b92915050565b60008160028301116110a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a0906120e6565b60405180910390fd5b600282019050919050565b6110bc6114dc565b604051806101000160405280600160088111156110d557fe5b81526020016000815260200160405180608001604052806000151581526020016000600181111561110257fe5b81526020016000600181111561111457fe5b8152602001858152508152602001848152602001600081526020013073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160405180602001604052806000815250815250905092915050565b6111756114dc565b60405180610100016040528060088081111561118d57fe5b8152602001600081526020016040518060800160405280600015158152602001600060018111156111ba57fe5b8152602001600060018111156111cc57fe5b81526020016000815250815260200160008152602001600081526020013073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001838152509050919050565b61121f6114dc565b6040518061010001604052806000600881111561123857fe5b81526020016000815260200160405180608001604052806001151581526020016000600181111561126557fe5b81526020016000600181111561127757fe5b8152602001858152508152602001848152602001600081526020013073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160405180602001604052806000815250815250905092915050565b6112d8611548565b60405180604001604052803073ffffffffffffffffffffffffffffffffffffffff1681526020016001815250905090565b600060608473ffffffffffffffffffffffffffffffffffffffff1663095ea7b3858560405160240161133c929190612046565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161138a9190611f54565b6000604051808303816000865af19150503d80600081146113c7576040519150601f19603f3d011682016040523d82523d6000602084013e6113cc565b606091505b50915091508180156113fa57506000815114806113f95750808060200190516113f8919081019061186c565b5b5b611439576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611430906121a6565b60405180910390fd5b5050505050565b6040518061010001604052806000600881111561145957fe5b81526020016000815260200161146d611578565b81526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001606081525090565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600081525090565b604051806101000160405280600060088111156114f557fe5b815260200160008152602001611509611578565b81526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001606081525090565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600081525090565b60405180608001604052806000151581526020016000600181111561159957fe5b8152602001600060018111156115ab57fe5b8152602001600081525090565b6000813590506115c7816124fa565b92915050565b6000815190506115dc816124fa565b92915050565b6000813590506115f181612511565b92915050565b600082601f83011261160857600080fd5b815161161b61161682612268565b61223b565b9150818183526020840193506020810190508385602084028201111561164057600080fd5b60005b8381101561167057816116568882611709565b845260208401935060208301925050600181019050611643565b5050505092915050565b60008151905061168981612528565b92915050565b60008083601f8401126116a157600080fd5b8235905067ffffffffffffffff8111156116ba57600080fd5b6020830191508360018202830111156116d257600080fd5b9250929050565b6000604082840312156116eb57600080fd5b81905092915050565b6000813590506117038161253f565b92915050565b6000815190506117188161253f565b92915050565b60006020828403121561173057600080fd5b600061173e848285016115b8565b91505092915050565b60006020828403121561175957600080fd5b6000611767848285016115cd565b91505092915050565b60008060006060848603121561178557600080fd5b6000611793868287016115e2565b93505060206117a4868287016115e2565b92505060406117b5868287016116f4565b9150509250925092565b600080600080608085870312156117d557600080fd5b60006117e3878288016115b8565b94505060206117f4878288016116d9565b935050606085013567ffffffffffffffff81111561181157600080fd5b61181d8782880161168f565b925092505092959194509250565b60006020828403121561183d57600080fd5b600082015167ffffffffffffffff81111561185757600080fd5b611863848285016115f7565b91505092915050565b60006020828403121561187e57600080fd5b600061188c8482850161167a565b91505092915050565b6000602082840312156118a757600080fd5b60006118b584828501611709565b91505092915050565b6000806000606084860312156118d357600080fd5b60006118e1868287016116f4565b93505060206118f2868287016115e2565b9250506040611903868287016115b8565b9150509250925092565b6000611919838361196f565b60208301905092915050565b60006119318383611dff565b905092915050565b60006119458383611f07565b60408301905092915050565b61195a81612411565b82525050565b61196981612390565b82525050565b6119788161237e565b82525050565b6119878161237e565b82525050565b6000611998826122c0565b6119a2818561231e565b93506119ad83612290565b8060005b838110156119de5781516119c5888261190d565b97506119d0836122f7565b9250506001810190506119b1565b5085935050505092915050565b60006119f6826122cb565b611a00818561232f565b935083602082028501611a12856122a0565b8060005b85811015611a4e5784840389528151611a2f8582611925565b9450611a3a83612304565b925060208a01995050600181019050611a16565b50829750879550505050505092915050565b6000611a6b826122d6565b611a758185612340565b9350611a80836122b0565b8060005b83811015611ab1578151611a988882611939565b9750611aa383612311565b925050600181019050611a84565b5085935050505092915050565b611ac7816123a2565b82525050565b6000611ad8826122ec565b611ae28185612362565b9350611af281856020860161248f565b80840191505092915050565b6000611b09826122e1565b611b138185612351565b9350611b2381856020860161248f565b611b2c816124c2565b840191505092915050565b611b4081612423565b82525050565b611b4f81612435565b82525050565b611b5e81612447565b82525050565b611b6d81612459565b82525050565b6000611b80600c8361236d565b91507f6d756c2d6f766572666c6f7700000000000000000000000000000000000000006000830152602082019050919050565b6000611bc060248361236d565b91507f4e6f7420656e6f7567682066756e647320746f2072657061792064796478206c60008301527f6f616e21000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611c26600b8361236d565b91507f2b32206f766572666c6f770000000000000000000000000000000000000000006000830152602082019050919050565b6000611c6660118361236d565b91507f726571756972652076616c7565203e20320000000000000000000000000000006000830152602082019050919050565b6000611ca6600d8361236d565b91507f7375622d756e646572666c6f77000000000000000000000000000000000000006000830152602082019050919050565b6000611ce660148361236d565b91507f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006000830152602082019050919050565b6000611d26601d8361236d565b91507f63616c6c46756e6374696f6e20706172616d20636865636b206661696c0000006000830152602082019050919050565b6000611d6660248361236d565b91507f4e6f206d61726b6574496420666f756e6420666f722070726f7669646564207460008301527f6f6b656e000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611dcc600e8361236d565b91507f415050524f56455f4641494c45440000000000000000000000000000000000006000830152602082019050919050565b600061016083016000830151611e186000860182611b37565b506020830151611e2b6020860182611f36565b506040830151611e3e6040860182611eb2565b506060830151611e5160c0860182611f36565b506080830151611e6460e0860182611f36565b5060a0830151611e7861010086018261196f565b5060c0830151611e8c610120860182611f36565b5060e0830151848203610140860152611ea58282611afe565b9150508091505092915050565b608082016000820151611ec86000850182611abe565b506020820151611edb6020850182611b46565b506040820151611eee6040850182611b55565b506060820151611f016060850182611f36565b50505050565b604082016000820151611f1d600085018261196f565b506020820151611f306020850182611f36565b50505050565b611f3f81612407565b82525050565b611f4e81612407565b82525050565b6000611f608284611acd565b915081905092915050565b6000602082019050611f80600083018461197e565b92915050565b6000606082019050611f9b6000830186611960565b611fa8602083018561197e565b611fb56040830184611f45565b949350505050565b6000604082019050611fd26000830185611951565b611fdf6020830184611f45565b9392505050565b6000604082019050611ffb600083018561197e565b6120086020830184611951565b9392505050565b6000606082019050612024600083018661197e565b612031602083018561197e565b61203e6040830184611f45565b949350505050565b600060408201905061205b600083018561197e565b6120686020830184611f45565b9392505050565b600060408201905081810360008301526120898185611a60565b9050818103602083015261209d81846119eb565b90509392505050565b600060208201905081810360008301526120bf81611b73565b9050919050565b600060208201905081810360008301526120df81611bb3565b9050919050565b600060208201905081810360008301526120ff81611c19565b9050919050565b6000602082019050818103600083015261211f81611c59565b9050919050565b6000602082019050818103600083015261213f81611c99565b9050919050565b6000602082019050818103600083015261215f81611cd9565b9050919050565b6000602082019050818103600083015261217f81611d19565b9050919050565b6000602082019050818103600083015261219f81611d59565b9050919050565b600060208201905081810360008301526121bf81611dbf565b9050919050565b60006020820190506121db6000830184611f45565b92915050565b600060a0820190506121f66000830188611f45565b6122036020830187611b64565b8181036040830152612215818661198d565b9050612224606083018561197e565b6122316080830184611f45565b9695505050505050565b6000604051905081810181811067ffffffffffffffff8211171561225e57600080fd5b8060405250919050565b600067ffffffffffffffff82111561227f57600080fd5b602082029050602081019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000612389826123e7565b9050919050565b600061239b826123e7565b9050919050565b60008115159050919050565b60008190506123bc826124d3565b919050565b60008190506123cf826124e0565b919050565b60008190506123e2826124ed565b919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061241c8261246b565b9050919050565b600061242e826123ae565b9050919050565b6000612440826123c1565b9050919050565b6000612452826123d4565b9050919050565b600061246482612407565b9050919050565b60006124768261247d565b9050919050565b6000612488826123e7565b9050919050565b60005b838110156124ad578082015181840152602081019050612492565b838111156124bc576000848401525b50505050565b6000601f19601f8301169050919050565b600981106124dd57fe5b50565b600281106124ea57fe5b50565b600281106124f757fe5b50565b6125038161237e565b811461250e57600080fd5b50565b61251a81612390565b811461252557600080fd5b50565b612531816123a2565b811461253c57600080fd5b50565b61254881612407565b811461255357600080fd5b5056fea365627a7a72315820b3b3e95b8e5fb3ea58ed4b90c13288fe966e8ea5ccdb6707ca8976620529998a6c6578706572696d656e74616cf564736f6c63430005110040

Deployed Bytecode

0x6080604052600436106100295760003560e01c8063074805861461002e5780638b4187131461005e575b600080fd5b610048600480360361004391908101906118be565b610087565b60405161005591906121c6565b60405180910390f35b34801561006a57600080fd5b50610085600480360361008091908101906117bf565b610737565b005b6000600284116100cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100c390612106565b60405180910390fd5b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561011b5750833410155b15610186578273ffffffffffffffffffffffffffffffffffffffff1663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b15801561016857600080fd5b505af115801561017c573d6000803e3d6000fd5b5050505050610193565b61019283333087610cb0565b5b60006101d160c76101c3614e206101b56126498a610dea90919063ffffffff16565b610e4c90919063ffffffff16565b610e9c90919063ffffffff16565b905060006101f3731e0447b19bb6ecfdae1e4ae1694b0c3659614e4e86610eb0565b9050600061020083611062565b90508573ffffffffffffffffffffffffffffffffffffffff1663095ea7b3731e0447b19bb6ecfdae1e4ae1694b0c3659614e4e836040518363ffffffff1660e01b8152600401610251929190612046565b602060405180830381600087803b15801561026b57600080fd5b505af115801561027f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506102a3919081019061186c565b50606060036040519080825280602002602001820160405280156102e157816020015b6102ce611440565b8152602001906001900390816102c65790505b5090506102ee83856110b4565b816000815181106102fb57fe5b602002602001018190525061033287878460405160200161031e93929190611f86565b60405160208183030381529060405261116d565b8160018151811061033f57fe5b60200260200101819052506103548383611217565b8160028151811061036157fe5b6020026020010181905250606060016040519080825280602002602001820160405280156103a957816020015b6103966114ac565b81526020019060019003908161038e5790505b5090506103b46112d0565b816000815181106103c157fe5b6020026020010181905250731e0447b19bb6ecfdae1e4ae1694b0c3659614e4e73ffffffffffffffffffffffffffffffffffffffff1663a67a6a4582846040518363ffffffff1660e01b815260040161041b92919061206f565b600060405180830381600087803b15801561043557600080fd5b505af1158015610449573d6000803e3d6000fd5b5050505060007372e5b0cb1099e664e044a7fd4185d3af8965e09573ffffffffffffffffffffffffffffffffffffffff1663fb3e6f29896040518263ffffffff1660e01b815260040161049c9190611f6b565b60206040518083038186803b1580156104b457600080fd5b505afa1580156104c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506104ec9190810190611747565b905060007372e5b0cb1099e664e044a7fd4185d3af8965e09573ffffffffffffffffffffffffffffffffffffffff1663fbc98cbf836040518263ffffffff1660e01b815260040161053d9190611f6b565b60206040518083038186803b15801561055557600080fd5b505afa158015610569573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061058d9190810190611747565b90507372e5b0cb1099e664e044a7fd4185d3af8965e09573ffffffffffffffffffffffffffffffffffffffff166321c0b342838c6040518363ffffffff1660e01b81526004016105de929190611fe6565b600060405180830381600087803b1580156105f857600080fd5b505af115801561060c573d6000803e3d6000fd5b505050508073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016106499190611f6b565b60206040518083038186803b15801561066157600080fd5b505afa158015610675573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506106999190810190611895565b97508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb338a6040518363ffffffff1660e01b81526004016106d6929190611fbd565b602060405180830381600087803b1580156106f057600080fd5b505af1158015610704573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610728919081019061186c565b50505050505050509392505050565b731e0447b19bb6ecfdae1e4ae1694b0c3659614e4e73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480156107b157503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156107fa57503073ffffffffffffffffffffffffffffffffffffffff168360000160206107e2919081019061171e565b73ffffffffffffffffffffffffffffffffffffffff16145b801561080a575060018360200135145b610849576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084090612166565b60405180910390fd5b6060600260405190808252806020026020018201604052801561087b5781602001602082028038833980820191505090505b5090506000838361088f9190810190611770565b829250819150846000815181106108a257fe5b60200260200101856001815181106108b657fe5b602002602001018295508373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152508373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050505060008260008151811061093257fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016109729190611f6b565b60206040518083038186803b15801561098a57600080fd5b505afa15801561099e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109c29190810190611895565b90506109f7836000815181106109d457fe5b60200260200101517372e5b0cb1099e664e044a7fd4185d3af8965e09583611309565b7372e5b0cb1099e664e044a7fd4185d3af8965e09573ffffffffffffffffffffffffffffffffffffffff166338ed17398260008630426040518663ffffffff1660e01b8152600401610a4d9594939291906121e1565b600060405180830381600087803b158015610a6757600080fd5b505af1158015610a7b573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250610aa4919081019061182b565b600181518110610ab057fe5b6020026020010151905082600181518110610ac757fe5b602002602001015183600081518110610adc57fe5b602002602001015184600081518110610af157fe5b6020026020010185600181518110610b0557fe5b602002602001018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152508273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152505050610ba183600081518110610b7e57fe5b60200260200101517372e5b0cb1099e664e044a7fd4185d3af8965e09583611309565b7372e5b0cb1099e664e044a7fd4185d3af8965e09573ffffffffffffffffffffffffffffffffffffffff166338ed17398260008630426040518663ffffffff1660e01b8152600401610bf79594939291906121e1565b600060405180830381600087803b158015610c1157600080fd5b505af1158015610c25573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f82011682018060405250610c4e919081019061182b565b600181518110610c5a57fe5b6020026020010151905081811015610ca7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9e906120c6565b60405180910390fd5b50505050505050565b600060608573ffffffffffffffffffffffffffffffffffffffff166323b872dd868686604051602401610ce59392919061200f565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051610d339190611f54565b6000604051808303816000865af19150503d8060008114610d70576040519150601f19603f3d011682016040523d82523d6000602084013e610d75565b606091505b5091509150818015610da35750600081511480610da2575080806020019051610da1919081019061186c565b5b5b610de2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd990612146565b60405180910390fd5b505050505050565b600080821480610e075750828283850292508281610e0457fe5b04145b610e46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3d906120a6565b60405180910390fd5b92915050565b6000828284039150811115610e96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8d90612126565b60405180910390fd5b92915050565b6000818381610ea757fe5b04905092915050565b60008083905060008173ffffffffffffffffffffffffffffffffffffffff1663295c39a56040518163ffffffff1660e01b815260040160206040518083038186803b158015610efe57600080fd5b505afa158015610f12573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f369190810190611895565b9050600080600090505b82811015611020578373ffffffffffffffffffffffffffffffffffffffff1663062bd3e9826040518263ffffffff1660e01b8152600401610f8191906121c6565b60206040518083038186803b158015610f9957600080fd5b505afa158015610fad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610fd19190810190611747565b91508573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611013578094505050505061105c565b8080600101915050610f40565b506040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105390612186565b60405180910390fd5b92915050565b60008160028301116110a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a0906120e6565b60405180910390fd5b600282019050919050565b6110bc6114dc565b604051806101000160405280600160088111156110d557fe5b81526020016000815260200160405180608001604052806000151581526020016000600181111561110257fe5b81526020016000600181111561111457fe5b8152602001858152508152602001848152602001600081526020013073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160405180602001604052806000815250815250905092915050565b6111756114dc565b60405180610100016040528060088081111561118d57fe5b8152602001600081526020016040518060800160405280600015158152602001600060018111156111ba57fe5b8152602001600060018111156111cc57fe5b81526020016000815250815260200160008152602001600081526020013073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001838152509050919050565b61121f6114dc565b6040518061010001604052806000600881111561123857fe5b81526020016000815260200160405180608001604052806001151581526020016000600181111561126557fe5b81526020016000600181111561127757fe5b8152602001858152508152602001848152602001600081526020013073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160405180602001604052806000815250815250905092915050565b6112d8611548565b60405180604001604052803073ffffffffffffffffffffffffffffffffffffffff1681526020016001815250905090565b600060608473ffffffffffffffffffffffffffffffffffffffff1663095ea7b3858560405160240161133c929190612046565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505060405161138a9190611f54565b6000604051808303816000865af19150503d80600081146113c7576040519150601f19603f3d011682016040523d82523d6000602084013e6113cc565b606091505b50915091508180156113fa57506000815114806113f95750808060200190516113f8919081019061186c565b5b5b611439576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611430906121a6565b60405180910390fd5b5050505050565b6040518061010001604052806000600881111561145957fe5b81526020016000815260200161146d611578565b81526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001606081525090565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600081525090565b604051806101000160405280600060088111156114f557fe5b815260200160008152602001611509611578565b81526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001606081525090565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600081525090565b60405180608001604052806000151581526020016000600181111561159957fe5b8152602001600060018111156115ab57fe5b8152602001600081525090565b6000813590506115c7816124fa565b92915050565b6000815190506115dc816124fa565b92915050565b6000813590506115f181612511565b92915050565b600082601f83011261160857600080fd5b815161161b61161682612268565b61223b565b9150818183526020840193506020810190508385602084028201111561164057600080fd5b60005b8381101561167057816116568882611709565b845260208401935060208301925050600181019050611643565b5050505092915050565b60008151905061168981612528565b92915050565b60008083601f8401126116a157600080fd5b8235905067ffffffffffffffff8111156116ba57600080fd5b6020830191508360018202830111156116d257600080fd5b9250929050565b6000604082840312156116eb57600080fd5b81905092915050565b6000813590506117038161253f565b92915050565b6000815190506117188161253f565b92915050565b60006020828403121561173057600080fd5b600061173e848285016115b8565b91505092915050565b60006020828403121561175957600080fd5b6000611767848285016115cd565b91505092915050565b60008060006060848603121561178557600080fd5b6000611793868287016115e2565b93505060206117a4868287016115e2565b92505060406117b5868287016116f4565b9150509250925092565b600080600080608085870312156117d557600080fd5b60006117e3878288016115b8565b94505060206117f4878288016116d9565b935050606085013567ffffffffffffffff81111561181157600080fd5b61181d8782880161168f565b925092505092959194509250565b60006020828403121561183d57600080fd5b600082015167ffffffffffffffff81111561185757600080fd5b611863848285016115f7565b91505092915050565b60006020828403121561187e57600080fd5b600061188c8482850161167a565b91505092915050565b6000602082840312156118a757600080fd5b60006118b584828501611709565b91505092915050565b6000806000606084860312156118d357600080fd5b60006118e1868287016116f4565b93505060206118f2868287016115e2565b9250506040611903868287016115b8565b9150509250925092565b6000611919838361196f565b60208301905092915050565b60006119318383611dff565b905092915050565b60006119458383611f07565b60408301905092915050565b61195a81612411565b82525050565b61196981612390565b82525050565b6119788161237e565b82525050565b6119878161237e565b82525050565b6000611998826122c0565b6119a2818561231e565b93506119ad83612290565b8060005b838110156119de5781516119c5888261190d565b97506119d0836122f7565b9250506001810190506119b1565b5085935050505092915050565b60006119f6826122cb565b611a00818561232f565b935083602082028501611a12856122a0565b8060005b85811015611a4e5784840389528151611a2f8582611925565b9450611a3a83612304565b925060208a01995050600181019050611a16565b50829750879550505050505092915050565b6000611a6b826122d6565b611a758185612340565b9350611a80836122b0565b8060005b83811015611ab1578151611a988882611939565b9750611aa383612311565b925050600181019050611a84565b5085935050505092915050565b611ac7816123a2565b82525050565b6000611ad8826122ec565b611ae28185612362565b9350611af281856020860161248f565b80840191505092915050565b6000611b09826122e1565b611b138185612351565b9350611b2381856020860161248f565b611b2c816124c2565b840191505092915050565b611b4081612423565b82525050565b611b4f81612435565b82525050565b611b5e81612447565b82525050565b611b6d81612459565b82525050565b6000611b80600c8361236d565b91507f6d756c2d6f766572666c6f7700000000000000000000000000000000000000006000830152602082019050919050565b6000611bc060248361236d565b91507f4e6f7420656e6f7567682066756e647320746f2072657061792064796478206c60008301527f6f616e21000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611c26600b8361236d565b91507f2b32206f766572666c6f770000000000000000000000000000000000000000006000830152602082019050919050565b6000611c6660118361236d565b91507f726571756972652076616c7565203e20320000000000000000000000000000006000830152602082019050919050565b6000611ca6600d8361236d565b91507f7375622d756e646572666c6f77000000000000000000000000000000000000006000830152602082019050919050565b6000611ce660148361236d565b91507f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006000830152602082019050919050565b6000611d26601d8361236d565b91507f63616c6c46756e6374696f6e20706172616d20636865636b206661696c0000006000830152602082019050919050565b6000611d6660248361236d565b91507f4e6f206d61726b6574496420666f756e6420666f722070726f7669646564207460008301527f6f6b656e000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000611dcc600e8361236d565b91507f415050524f56455f4641494c45440000000000000000000000000000000000006000830152602082019050919050565b600061016083016000830151611e186000860182611b37565b506020830151611e2b6020860182611f36565b506040830151611e3e6040860182611eb2565b506060830151611e5160c0860182611f36565b506080830151611e6460e0860182611f36565b5060a0830151611e7861010086018261196f565b5060c0830151611e8c610120860182611f36565b5060e0830151848203610140860152611ea58282611afe565b9150508091505092915050565b608082016000820151611ec86000850182611abe565b506020820151611edb6020850182611b46565b506040820151611eee6040850182611b55565b506060820151611f016060850182611f36565b50505050565b604082016000820151611f1d600085018261196f565b506020820151611f306020850182611f36565b50505050565b611f3f81612407565b82525050565b611f4e81612407565b82525050565b6000611f608284611acd565b915081905092915050565b6000602082019050611f80600083018461197e565b92915050565b6000606082019050611f9b6000830186611960565b611fa8602083018561197e565b611fb56040830184611f45565b949350505050565b6000604082019050611fd26000830185611951565b611fdf6020830184611f45565b9392505050565b6000604082019050611ffb600083018561197e565b6120086020830184611951565b9392505050565b6000606082019050612024600083018661197e565b612031602083018561197e565b61203e6040830184611f45565b949350505050565b600060408201905061205b600083018561197e565b6120686020830184611f45565b9392505050565b600060408201905081810360008301526120898185611a60565b9050818103602083015261209d81846119eb565b90509392505050565b600060208201905081810360008301526120bf81611b73565b9050919050565b600060208201905081810360008301526120df81611bb3565b9050919050565b600060208201905081810360008301526120ff81611c19565b9050919050565b6000602082019050818103600083015261211f81611c59565b9050919050565b6000602082019050818103600083015261213f81611c99565b9050919050565b6000602082019050818103600083015261215f81611cd9565b9050919050565b6000602082019050818103600083015261217f81611d19565b9050919050565b6000602082019050818103600083015261219f81611d59565b9050919050565b600060208201905081810360008301526121bf81611dbf565b9050919050565b60006020820190506121db6000830184611f45565b92915050565b600060a0820190506121f66000830188611f45565b6122036020830187611b64565b8181036040830152612215818661198d565b9050612224606083018561197e565b6122316080830184611f45565b9695505050505050565b6000604051905081810181811067ffffffffffffffff8211171561225e57600080fd5b8060405250919050565b600067ffffffffffffffff82111561227f57600080fd5b602082029050602081019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000612389826123e7565b9050919050565b600061239b826123e7565b9050919050565b60008115159050919050565b60008190506123bc826124d3565b919050565b60008190506123cf826124e0565b919050565b60008190506123e2826124ed565b919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061241c8261246b565b9050919050565b600061242e826123ae565b9050919050565b6000612440826123c1565b9050919050565b6000612452826123d4565b9050919050565b600061246482612407565b9050919050565b60006124768261247d565b9050919050565b6000612488826123e7565b9050919050565b60005b838110156124ad578082015181840152602081019050612492565b838111156124bc576000848401525b50505050565b6000601f19601f8301169050919050565b600981106124dd57fe5b50565b600281106124ea57fe5b50565b600281106124f757fe5b50565b6125038161237e565b811461250e57600080fd5b50565b61251a81612390565b811461252557600080fd5b50565b612531816123a2565b811461253c57600080fd5b50565b61254881612407565b811461255357600080fd5b5056fea365627a7a72315820b3b3e95b8e5fb3ea58ed4b90c13288fe966e8ea5ccdb6707ca8976620529998a6c6578706572696d656e74616cf564736f6c63430005110040

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.