Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
AirTrafficControlV3
Compiler Version
v0.8.17+commit.8df45f5f
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// 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);
}
}{
"optimizer": {
"enabled": true,
"runs": 200
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
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"}]Contract Creation Code
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
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
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.