ETH Price: $2,038.32 (-3.32%)

Contract

0x7A60109ca9c6eDFCe19a2Ef52996CEeB71b4C09e
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To

There are no matching entries

Please try again later

Advanced mode:
Parent Transaction Hash Method Block
From
To
View All Internal Transactions
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:
AirTrafficControlV3

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;

interface IRadar {
    function getHandler(string memory name) external view returns (address);
    function getByteHandler(uint8 byteLength) external view returns (address);
    function getSymbolHandler(bytes1 symbol) external view returns (address);
}

/**
 * @title AirTrafficControlV3
 * @notice Master routing contract with dynamic handler tracking
 * @dev Uses Radar for real-time handler address tracking
 */
contract AirTrafficControlV3 {
    // ============ State Variables ============
    
    // Radar that tracks all handler addresses
    IRadar public immutable radar;
    
    // Owner for admin functions
    address public owner;
    
    // ============ Events ============
    
    event NameResolved(string name, address handler, address result);
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    
    // ============ Constructor ============
    
    constructor(address _radar) {
        require(_radar != address(0), "Invalid radar");
        radar = IRadar(_radar);
        owner = msg.sender;
    }
    
    // ============ Main Routing Function ============
    
    /**
     * @notice Route a name to the appropriate handler and resolve
     * @param name The name to resolve
     * @return The resolved address
     */
    function resolve(string memory name) public view returns (address) {
        bytes memory nameBytes = bytes(name);
        require(nameBytes.length > 0, "Empty name");
        
        // Determine handler based on name characteristics
        address handler = _getHandler(nameBytes);
        
        // Resolve through the handler
        return _resolveViaHandler(handler, name);
    }
    
    /**
     * @notice Check if a name is available
     * @param name The name to check
     * @return Whether the name is available
     */
    function isAvailable(string memory name) public view returns (bool) {
        address result = resolve(name);
        return result == address(0);
    }
    
    /**
     * @notice Get detailed routing information for a name
     * @param name The name to analyze
     * @return handler The handler address
     * @return routingPattern The pattern used for routing
     * @return patternType Description of the pattern type
     */
    function getRoutingInfo(string memory name) external view returns (
        address handler,
        bytes memory routingPattern,
        string memory patternType
    ) {
        bytes memory nameBytes = bytes(name);
        require(nameBytes.length > 0, "Empty name");
        
        handler = _getHandler(nameBytes);
        
        // Determine pattern type
        if (_startsWithSymbol(nameBytes)) {
            routingPattern = new bytes(2);
            routingPattern[0] = nameBytes[0];
            routingPattern[1] = nameBytes.length > 1 ? nameBytes[1] : bytes1(0);
            patternType = "Symbol";
        } else if (_containsDot(nameBytes)) {
            routingPattern = _extractDomainPattern(nameBytes);
            patternType = "Domain";
        } else {
            uint256 patternLength = _getPatternLength(nameBytes);
            routingPattern = new bytes(patternLength);
            for (uint i = 0; i < patternLength && i < nameBytes.length; i++) {
                routingPattern[i] = nameBytes[i];
            }
            
            if (patternLength == 2) patternType = "2-byte";
            else if (patternLength == 3) patternType = "3-byte";
            else if (patternLength == 4) patternType = "4-byte";
            else if (patternLength == 5) patternType = "5-byte";
            else if (patternLength == 6) patternType = "6-byte";
            else patternType = "Unknown";
        }
    }
    
    // ============ Internal Routing Logic ============
    
    /**
     * @dev Determine which handler to use based on name
     */
    function _getHandler(bytes memory nameBytes) private view returns (address) {
        // Check if it's a symbol
        if (_startsWithSymbol(nameBytes)) {
            return radar.getSymbolHandler(nameBytes[0]);
        }
        
        // Check if it's a domain
        if (_containsDot(nameBytes)) {
            // Domains are handled by CIC
            return radar.getHandler("CIC");
        }
        
        // Route by byte length of the pattern
        uint256 patternLength = _getPatternLength(nameBytes);
        
        // Get handler from radar based on byte length
        return radar.getByteHandler(uint8(patternLength));
    }
    
    /**
     * @dev Calculate the byte length of the pattern (first characters)
     */
    function _getPatternLength(bytes memory nameBytes) private pure returns (uint256) {
        if (nameBytes.length < 2) return nameBytes.length;
        
        uint256 totalBytes = 0;
        uint256 charCount = 0;
        uint256 i = 0;
        
        // Count bytes for first 2 characters
        while (i < nameBytes.length && charCount < 2) {
            uint8 firstByte = uint8(nameBytes[i]);
            uint256 charBytes;
            
            if (firstByte < 0x80) {
                // ASCII character (1 byte)
                charBytes = 1;
            } else if (firstByte < 0xE0) {
                // 2-byte UTF-8 character
                charBytes = 2;
            } else if (firstByte < 0xF0) {
                // 3-byte UTF-8 character
                charBytes = 3;
            } else {
                // 4-byte UTF-8 character
                charBytes = 4;
            }
            
            // Ensure we don't go out of bounds
            if (i + charBytes > nameBytes.length) {
                break;
            }
            
            totalBytes += charBytes;
            i += charBytes;
            charCount++;
        }
        
        return totalBytes;
    }
    
    /**
     * @dev Check if name starts with a symbol
     */
    function _startsWithSymbol(bytes memory nameBytes) private pure returns (bool) {
        if (nameBytes.length == 0) return false;
        return _isSymbolByte(nameBytes[0]) && nameBytes[0] != 0x2e; // Exclude dot
    }
    
    /**
     * @dev Check if name contains a dot
     */
    function _containsDot(bytes memory nameBytes) private pure returns (bool) {
        for (uint i = 0; i < nameBytes.length; i++) {
            if (nameBytes[i] == 0x2e) return true;
        }
        return false;
    }
    
    /**
     * @dev Extract pattern for domains
     */
    function _extractDomainPattern(bytes memory nameBytes) private pure returns (bytes memory) {
        // Find last dot and use dot + next char
        uint lastDotIndex = 0;
        bool hasDot = false;
        
        for (uint i = 0; i < nameBytes.length; i++) {
            if (nameBytes[i] == 0x2e) {
                lastDotIndex = i;
                hasDot = true;
            }
        }
        
        if (hasDot && lastDotIndex < nameBytes.length - 1) {
            bytes memory pattern = new bytes(2);
            pattern[0] = 0x2e;
            pattern[1] = nameBytes[lastDotIndex + 1];
            return pattern;
        }
        
        // Fallback to first 2 bytes
        bytes memory pattern = new bytes(2);
        pattern[0] = nameBytes[0];
        pattern[1] = nameBytes.length > 1 ? nameBytes[1] : bytes1(0);
        return pattern;
    }
    
    /**
     * @dev Check if a byte represents a symbol
     */
    function _isSymbolByte(bytes1 b) private pure returns (bool) {
        return b == 0x7e || // ~ (tilde)
               b == 0x40 || // @ (at)
               b == 0x23 || // # (hash)
               b == 0x24 || // $ (dollar)
               b == 0x2a || // * (star)
               b == 0x2b || // + (plus)
               b == 0x2e;   // . (dot)
    }
    
    /**
     * @dev Resolve a name through a specific handler
     */
    function _resolveViaHandler(address handler, string memory name) private view returns (address) {
        if (handler == address(0)) {
            return address(0);
        }
        
        // Call resolve function on the handler
        (bool success, bytes memory data) = handler.staticcall(
            abi.encodeWithSignature("resolve(string)", name)
        );
        
        if (success && data.length >= 32) {
            return abi.decode(data, (address));
        }
        
        return address(0);
    }
    
    // ============ Admin Functions ============
    
    /**
     * @notice Transfer ownership of the contract
     */
    function transferOwnership(address newOwner) external {
        require(msg.sender == owner, "Not owner");
        require(newOwner != address(0), "Invalid owner");
        
        address oldOwner = owner;
        owner = newOwner;
        
        emit OwnershipTransferred(oldOwner, newOwner);
    }
    
    // ============ View Functions ============
    
    /**
     * @notice Get the radar address
     */
    function getRadar() external view returns (address) {
        return address(radar);
    }
}

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

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"_radar","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"name","type":"string"},{"indexed":false,"internalType":"address","name":"handler","type":"address"},{"indexed":false,"internalType":"address","name":"result","type":"address"}],"name":"NameResolved","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"getRadar","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"name":"getRoutingInfo","outputs":[{"internalType":"address","name":"handler","type":"address"},{"internalType":"bytes","name":"routingPattern","type":"bytes"},{"internalType":"string","name":"patternType","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"name":"isAvailable","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"radar","outputs":[{"internalType":"contract IRadar","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"name":"resolve","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60a060405234801561001057600080fd5b5060405161106e38038061106e83398101604081905261002f9161009c565b6001600160a01b0381166100795760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b2103930b230b960991b604482015260640160405180910390fd5b6001600160a01b0316608052600080546001600160a01b031916331790556100cc565b6000602082840312156100ae57600080fd5b81516001600160a01b03811681146100c557600080fd5b9392505050565b608051610f6c6101026000396000818160ed015281816101330152818161063b0152818161072701526107840152610f6c6000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063a71ced9b1161005b578063a71ced9b146100e8578063a9fbd17e1461010f578063d46763e114610131578063f2fde38b1461015757600080fd5b8063461a4478146100825780638da5cb5b146100b2578063965306aa146100c5575b600080fd5b610095610090366004610d09565b61016c565b6040516001600160a01b0390911681526020015b60405180910390f35b600054610095906001600160a01b031681565b6100d86100d3366004610d09565b6101d0565b60405190151581526020016100a9565b6100957f000000000000000000000000000000000000000000000000000000000000000081565b61012261011d366004610d09565b6101ed565b6040516100a993929190610e0a565b7f0000000000000000000000000000000000000000000000000000000000000000610095565b61016a610165366004610e62565b61054d565b005b805160009082906101b15760405162461bcd60e51b815260206004820152600a602482015269456d707479206e616d6560b01b60448201526064015b60405180910390fd5b60006101bc82610629565b90506101c881856107fe565b949350505050565b6000806101dc8361016c565b6001600160a01b0316159392505050565b6000606080600084905060008151116102355760405162461bcd60e51b815260206004820152600a602482015269456d707479206e616d6560b01b60448201526064016101a8565b61023e81610629565b9350610249816108ea565b1561033857604080516002808252818301909252906020820181803683370190505092508060008151811061028057610280610e7f565b602001015160f81c60f81b8360008151811061029e5761029e610e7f565b60200101906001600160f81b031916908160001a90535060018151116102c55760006102e8565b806001815181106102d8576102d8610e7f565b01602001516001600160f81b0319165b836001815181106102fb576102fb610e7f565b60200101906001600160f81b031916908160001a9053506040518060400160405280600681526020016514de5b589bdb60d21b8152509150610545565b6103418161095e565b156103775761034f816109ba565b9250604051806040016040528060068152602001652237b6b0b4b760d11b8152509150610545565b600061038282610b77565b90508067ffffffffffffffff81111561039d5761039d610cf3565b6040519080825280601f01601f1916602001820160405280156103c7576020820181803683370190505b50935060005b81811080156103dc5750825181105b15610439578281815181106103f3576103f3610e7f565b602001015160f81c60f81b85828151811061041057610410610e7f565b60200101906001600160f81b031916908160001a9053508061043181610eab565b9150506103cd565b50806002036104685760405180604001604052806006815260200165322d6279746560d01b8152509250610543565b806003036104965760405180604001604052806006815260200165332d6279746560d01b8152509250610543565b806004036104c45760405180604001604052806006815260200165342d6279746560d01b8152509250610543565b806005036104f25760405180604001604052806006815260200165352d6279746560d01b8152509250610543565b806006036105205760405180604001604052806006815260200165362d6279746560d01b8152509250610543565b604051806040016040528060078152602001662ab735b737bbb760c91b81525092505b505b509193909250565b6000546001600160a01b031633146105935760405162461bcd60e51b81526020600482015260096024820152682737ba1037bbb732b960b91b60448201526064016101a8565b6001600160a01b0381166105d95760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b21037bbb732b960991b60448201526064016101a8565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000610634826108ea565b156106f0577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a71bc3e98360008151811061067b5761067b610e7f565b01602001516040516001600160e01b031960e084901b1681526001600160f81b031990911660048201526024015b602060405180830381865afa1580156106c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ea9190610ec4565b92915050565b6106f98261095e565b1561075e5760405163013b167960e61b815260206004820152600360248201526243494360e81b60448201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690634ec59e40906064016106a9565b600061076983610b77565b604051631e9efa9560e21b815260ff821660048201529091507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690637a7bea5490602401602060405180830381865afa1580156107d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f79190610ec4565b9392505050565b60006001600160a01b038316610816575060006106ea565b600080846001600160a01b0316846040516024016108349190610ee1565b60408051601f198184030181529181526020820180516001600160e01b03166308c3488f60e31b179052516108699190610ef4565b600060405180830381855afa9150503d80600081146108a4576040519150601f19603f3d011682016040523d82523d6000602084013e6108a9565b606091505b50915091508180156108bd57506020815110155b156108df57808060200190518101906108d69190610ec4565b925050506106ea565b506000949350505050565b600081516000036108fd57506000919050565b6109278260008151811061091357610913610e7f565b01602001516001600160f81b031916610c4e565b80156106ea57508160008151811061094157610941610e7f565b6020910101516001600160f81b031916601760f91b141592915050565b6000805b82518110156109b15782818151811061097d5761097d610e7f565b01602001516001600160f81b031916601760f91b0361099f5750600192915050565b806109a981610eab565b915050610962565b50600092915050565b606060008060005b8451811015610a10578481815181106109dd576109dd610e7f565b01602001516001600160f81b031916601760f91b036109fe57809250600191505b80610a0881610eab565b9150506109c2565b50808015610a2a575060018451610a279190610f10565b82105b15610ad857604080516002808252818301909252600091602082018180368337019050509050602e60f81b81600081518110610a6857610a68610e7f565b60200101906001600160f81b031916908160001a90535084610a8b846001610f23565b81518110610a9b57610a9b610e7f565b602001015160f81c60f81b81600181518110610ab957610ab9610e7f565b60200101906001600160f81b031916908160001a905350949350505050565b60408051600280825281830190925260009160208201818036833701905050905084600081518110610b0c57610b0c610e7f565b602001015160f81c60f81b81600081518110610b2a57610b2a610e7f565b60200101906001600160f81b031916908160001a9053506001855111610b51576000610b64565b84600181518110610a9b57610a9b610e7f565b81600181518110610ab957610ab9610e7f565b6000600282511015610b8857505190565b60008060005b845181108015610b9e5750600282105b15610c45576000858281518110610bb757610bb7610e7f565b016020015160f81c905060006080821015610bd457506001610c00565b60e08260ff161015610be857506002610c00565b60f08260ff161015610bfc57506003610c00565b5060045b8651610c0c8285610f23565b1115610c19575050610c45565b610c238186610f23565b9450610c2f8184610f23565b925083610c3b81610eab565b9450505050610b8e565b50909392505050565b6000603f60f91b6001600160f81b031983161480610c795750600160fe1b6001600160f81b03198316145b80610c915750602360f81b6001600160f81b03198316145b80610ca95750600960fa1b6001600160f81b03198316145b80610cc15750601560f91b6001600160f81b03198316145b80610cd95750602b60f81b6001600160f81b03198316145b806106ea5750506001600160f81b031916601760f91b1490565b634e487b7160e01b600052604160045260246000fd5b600060208284031215610d1b57600080fd5b813567ffffffffffffffff80821115610d3357600080fd5b818401915084601f830112610d4757600080fd5b813581811115610d5957610d59610cf3565b604051601f8201601f19908116603f01168101908382118183101715610d8157610d81610cf3565b81604052828152876020848701011115610d9a57600080fd5b826020860160208301376000928101602001929092525095945050505050565b60005b83811015610dd5578181015183820152602001610dbd565b50506000910152565b60008151808452610df6816020860160208601610dba565b601f01601f19169290920160200192915050565b6001600160a01b0384168152606060208201819052600090610e2e90830185610dde565b8281036040840152610e408185610dde565b9695505050505050565b6001600160a01b0381168114610e5f57600080fd5b50565b600060208284031215610e7457600080fd5b81356107f781610e4a565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201610ebd57610ebd610e95565b5060010190565b600060208284031215610ed657600080fd5b81516107f781610e4a565b6020815260006107f76020830184610dde565b60008251610f06818460208701610dba565b9190910192915050565b818103818111156106ea576106ea610e95565b808201808211156106ea576106ea610e9556fea26469706673582212201659571e04c753840d7368cf191b23848dfcf9eaf6bcfd9d1a0d5240109a1f1564736f6c63430008110033000000000000000000000000c12a88cc616867c10823d3e1031d3baed3c46c9e

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061007d5760003560e01c8063a71ced9b1161005b578063a71ced9b146100e8578063a9fbd17e1461010f578063d46763e114610131578063f2fde38b1461015757600080fd5b8063461a4478146100825780638da5cb5b146100b2578063965306aa146100c5575b600080fd5b610095610090366004610d09565b61016c565b6040516001600160a01b0390911681526020015b60405180910390f35b600054610095906001600160a01b031681565b6100d86100d3366004610d09565b6101d0565b60405190151581526020016100a9565b6100957f000000000000000000000000c12a88cc616867c10823d3e1031d3baed3c46c9e81565b61012261011d366004610d09565b6101ed565b6040516100a993929190610e0a565b7f000000000000000000000000c12a88cc616867c10823d3e1031d3baed3c46c9e610095565b61016a610165366004610e62565b61054d565b005b805160009082906101b15760405162461bcd60e51b815260206004820152600a602482015269456d707479206e616d6560b01b60448201526064015b60405180910390fd5b60006101bc82610629565b90506101c881856107fe565b949350505050565b6000806101dc8361016c565b6001600160a01b0316159392505050565b6000606080600084905060008151116102355760405162461bcd60e51b815260206004820152600a602482015269456d707479206e616d6560b01b60448201526064016101a8565b61023e81610629565b9350610249816108ea565b1561033857604080516002808252818301909252906020820181803683370190505092508060008151811061028057610280610e7f565b602001015160f81c60f81b8360008151811061029e5761029e610e7f565b60200101906001600160f81b031916908160001a90535060018151116102c55760006102e8565b806001815181106102d8576102d8610e7f565b01602001516001600160f81b0319165b836001815181106102fb576102fb610e7f565b60200101906001600160f81b031916908160001a9053506040518060400160405280600681526020016514de5b589bdb60d21b8152509150610545565b6103418161095e565b156103775761034f816109ba565b9250604051806040016040528060068152602001652237b6b0b4b760d11b8152509150610545565b600061038282610b77565b90508067ffffffffffffffff81111561039d5761039d610cf3565b6040519080825280601f01601f1916602001820160405280156103c7576020820181803683370190505b50935060005b81811080156103dc5750825181105b15610439578281815181106103f3576103f3610e7f565b602001015160f81c60f81b85828151811061041057610410610e7f565b60200101906001600160f81b031916908160001a9053508061043181610eab565b9150506103cd565b50806002036104685760405180604001604052806006815260200165322d6279746560d01b8152509250610543565b806003036104965760405180604001604052806006815260200165332d6279746560d01b8152509250610543565b806004036104c45760405180604001604052806006815260200165342d6279746560d01b8152509250610543565b806005036104f25760405180604001604052806006815260200165352d6279746560d01b8152509250610543565b806006036105205760405180604001604052806006815260200165362d6279746560d01b8152509250610543565b604051806040016040528060078152602001662ab735b737bbb760c91b81525092505b505b509193909250565b6000546001600160a01b031633146105935760405162461bcd60e51b81526020600482015260096024820152682737ba1037bbb732b960b91b60448201526064016101a8565b6001600160a01b0381166105d95760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b21037bbb732b960991b60448201526064016101a8565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000610634826108ea565b156106f0577f000000000000000000000000c12a88cc616867c10823d3e1031d3baed3c46c9e6001600160a01b031663a71bc3e98360008151811061067b5761067b610e7f565b01602001516040516001600160e01b031960e084901b1681526001600160f81b031990911660048201526024015b602060405180830381865afa1580156106c6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106ea9190610ec4565b92915050565b6106f98261095e565b1561075e5760405163013b167960e61b815260206004820152600360248201526243494360e81b60448201527f000000000000000000000000c12a88cc616867c10823d3e1031d3baed3c46c9e6001600160a01b031690634ec59e40906064016106a9565b600061076983610b77565b604051631e9efa9560e21b815260ff821660048201529091507f000000000000000000000000c12a88cc616867c10823d3e1031d3baed3c46c9e6001600160a01b031690637a7bea5490602401602060405180830381865afa1580156107d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f79190610ec4565b9392505050565b60006001600160a01b038316610816575060006106ea565b600080846001600160a01b0316846040516024016108349190610ee1565b60408051601f198184030181529181526020820180516001600160e01b03166308c3488f60e31b179052516108699190610ef4565b600060405180830381855afa9150503d80600081146108a4576040519150601f19603f3d011682016040523d82523d6000602084013e6108a9565b606091505b50915091508180156108bd57506020815110155b156108df57808060200190518101906108d69190610ec4565b925050506106ea565b506000949350505050565b600081516000036108fd57506000919050565b6109278260008151811061091357610913610e7f565b01602001516001600160f81b031916610c4e565b80156106ea57508160008151811061094157610941610e7f565b6020910101516001600160f81b031916601760f91b141592915050565b6000805b82518110156109b15782818151811061097d5761097d610e7f565b01602001516001600160f81b031916601760f91b0361099f5750600192915050565b806109a981610eab565b915050610962565b50600092915050565b606060008060005b8451811015610a10578481815181106109dd576109dd610e7f565b01602001516001600160f81b031916601760f91b036109fe57809250600191505b80610a0881610eab565b9150506109c2565b50808015610a2a575060018451610a279190610f10565b82105b15610ad857604080516002808252818301909252600091602082018180368337019050509050602e60f81b81600081518110610a6857610a68610e7f565b60200101906001600160f81b031916908160001a90535084610a8b846001610f23565b81518110610a9b57610a9b610e7f565b602001015160f81c60f81b81600181518110610ab957610ab9610e7f565b60200101906001600160f81b031916908160001a905350949350505050565b60408051600280825281830190925260009160208201818036833701905050905084600081518110610b0c57610b0c610e7f565b602001015160f81c60f81b81600081518110610b2a57610b2a610e7f565b60200101906001600160f81b031916908160001a9053506001855111610b51576000610b64565b84600181518110610a9b57610a9b610e7f565b81600181518110610ab957610ab9610e7f565b6000600282511015610b8857505190565b60008060005b845181108015610b9e5750600282105b15610c45576000858281518110610bb757610bb7610e7f565b016020015160f81c905060006080821015610bd457506001610c00565b60e08260ff161015610be857506002610c00565b60f08260ff161015610bfc57506003610c00565b5060045b8651610c0c8285610f23565b1115610c19575050610c45565b610c238186610f23565b9450610c2f8184610f23565b925083610c3b81610eab565b9450505050610b8e565b50909392505050565b6000603f60f91b6001600160f81b031983161480610c795750600160fe1b6001600160f81b03198316145b80610c915750602360f81b6001600160f81b03198316145b80610ca95750600960fa1b6001600160f81b03198316145b80610cc15750601560f91b6001600160f81b03198316145b80610cd95750602b60f81b6001600160f81b03198316145b806106ea5750506001600160f81b031916601760f91b1490565b634e487b7160e01b600052604160045260246000fd5b600060208284031215610d1b57600080fd5b813567ffffffffffffffff80821115610d3357600080fd5b818401915084601f830112610d4757600080fd5b813581811115610d5957610d59610cf3565b604051601f8201601f19908116603f01168101908382118183101715610d8157610d81610cf3565b81604052828152876020848701011115610d9a57600080fd5b826020860160208301376000928101602001929092525095945050505050565b60005b83811015610dd5578181015183820152602001610dbd565b50506000910152565b60008151808452610df6816020860160208601610dba565b601f01601f19169290920160200192915050565b6001600160a01b0384168152606060208201819052600090610e2e90830185610dde565b8281036040840152610e408185610dde565b9695505050505050565b6001600160a01b0381168114610e5f57600080fd5b50565b600060208284031215610e7457600080fd5b81356107f781610e4a565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201610ebd57610ebd610e95565b5060010190565b600060208284031215610ed657600080fd5b81516107f781610e4a565b6020815260006107f76020830184610dde565b60008251610f06818460208701610dba565b9190910192915050565b818103818111156106ea576106ea610e95565b808201808211156106ea576106ea610e9556fea26469706673582212201659571e04c753840d7368cf191b23848dfcf9eaf6bcfd9d1a0d5240109a1f1564736f6c63430008110033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000c12a88cc616867c10823d3e1031d3baed3c46c9e

-----Decoded View---------------
Arg [0] : _radar (address): 0xc12a88cC616867C10823d3E1031D3bAED3C46c9E

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000c12a88cc616867c10823d3e1031d3baed3c46c9e


Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading

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.