CELO Price: $0.09 (-3.10%)
Gas: 25 GWei

Contract

0xFf038331fB76e8C58bfE80FB3e6E8E6F81D26e3F

Overview

CELO Balance

Celo Mainnet LogoCelo Mainnet LogoCelo Mainnet Logo0 CELO

CELO Value

$0.00

More Info

Private Name Tags

Multichain Info

Transaction Hash
Block
From
To
Add570857592026-01-21 9:08:3712 days ago1768986517IN
0xFf038331...F81D26e3F
0 CELO0.0033640325.001
Add570854242026-01-21 9:03:0212 days ago1768986182IN
0xFf038331...F81D26e3F
0 CELO0.0033640325.001
Add570853802026-01-21 9:02:1812 days ago1768986138IN
0xFf038331...F81D26e3F
0 CELO0.0033640325.001
Add570853032026-01-21 9:01:0112 days ago1768986061IN
0xFf038331...F81D26e3F
0 CELO0.0033640325.001
Add570852542026-01-21 9:00:1212 days ago1768986012IN
0xFf038331...F81D26e3F
0 CELO0.0033640325.001
Add570852052026-01-21 8:59:2312 days ago1768985963IN
0xFf038331...F81D26e3F
0 CELO0.0033919625.20854326
Add570851552026-01-21 8:58:3312 days ago1768985913IN
0xFf038331...F81D26e3F
0 CELO0.0033693125.04025283
Add570850752026-01-21 8:57:1312 days ago1768985833IN
0xFf038331...F81D26e3F
0 CELO0.0033640325.001
Add570850212026-01-21 8:56:1912 days ago1768985779IN
0xFf038331...F81D26e3F
0 CELO0.0033640325.001
Add570849582026-01-21 8:55:1612 days ago1768985716IN
0xFf038331...F81D26e3F
0 CELO0.0033640325.001
Add570848552026-01-21 8:53:3312 days ago1768985613IN
0xFf038331...F81D26e3F
0 CELO0.0033640325.001
Add570848102026-01-21 8:52:4812 days ago1768985568IN
0xFf038331...F81D26e3F
0 CELO0.0033640325.001
Add570847652026-01-21 8:52:0312 days ago1768985523IN
0xFf038331...F81D26e3F
0 CELO0.0033640325.001
Add570847162026-01-21 8:51:1412 days ago1768985474IN
0xFf038331...F81D26e3F
0 CELO0.0033640325.001
Add570846702026-01-21 8:50:2812 days ago1768985428IN
0xFf038331...F81D26e3F
0 CELO0.0033640325.001
Add570846202026-01-21 8:49:3812 days ago1768985378IN
0xFf038331...F81D26e3F
0 CELO0.0033640325.001
Transfer Ownersh...570845922026-01-21 8:49:1012 days ago1768985350IN
0xFf038331...F81D26e3F
0 CELO0.0007433225.001

View more zero value Internal Transactions in Advanced View mode

Advanced mode:

Cross-Chain Transactions
Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0xa4022062...956A26080
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
TokenUniqueSymbolIndex

Compiler Version
v0.8.30+commit.73712a01

Optimization Enabled:
Yes with 200 runs

Other Settings:
shanghai EvmVersion, GNU AGPLv3 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at celoscan.io on 2025-07-15
*/

pragma solidity >=0.8.0;

// SPDX-License-Identifier: AGPL-3.0-or-later

contract TokenUniqueSymbolIndex {
	mapping(address => bool) isWriter;
	mapping ( bytes32 => uint256 ) registry;
	mapping ( address => bytes32 ) tokenIndex;
	address[] tokens;

	// Implements EIP173
	address public owner;

	// Implements Registry
	bytes32[] public identifierList;

	// Implements EIP173
	event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

	// Implements AccountsIndex
	event AddressKey(bytes32 indexed _symbol, address _token);

	// Implements AccountsIndex
	event AddressAdded(address _token);

	// Implements AccountsIndexMutable
	event AddressRemoved(address _token);

	// Implements Writer
	event WriterAdded(address _writer);

	// Implements Writer
	event WriterDeleted(address _writer);

	constructor() {
		owner = msg.sender;
		tokens.push(address(0));
		identifierList.push(bytes32(0));
	}

	// Implements AccountsIndex
	function entry(uint256 _idx) public view returns ( address ) {
		return tokens[_idx + 1];
	}

	// Implements RegistryClient
	function addressOf(bytes32 _key) public view returns ( address ) {
		uint256 idx;

		idx = registry[_key];
		return tokens[idx];
	}

	// Attempt to register the token at the given address.
	// Will revet if symbol cannot be retrieved, or if symbol already exists.
	function register(address _token) public returns (bool) {
		require(isWriter[msg.sender] || msg.sender == owner, 'ERR_AXX');

		bytes memory token_symbol;
		bytes32 token_symbol_key;
		uint256 idx;

		(bool _ok, bytes memory _r) = _token.call(abi.encodeWithSignature('symbol()'));
		require(_ok);

		token_symbol = abi.decode(_r, (bytes));
		require(token_symbol.length <= 32, 'ERR_TOKEN_SYMBOL_TOO_LONG');
		token_symbol_key = bytes32(token_symbol);

		idx = registry[token_symbol_key];
		require(idx == 0);

		registry[token_symbol_key] = tokens.length;
		tokens.push(_token);
		identifierList.push(token_symbol_key);
		tokenIndex[_token] = token_symbol_key;

		emit AddressKey(token_symbol_key, _token);
		emit AddressAdded(_token);
		return true;
	}

	// Implements AccountsIndex
	function add(address _token) public returns (bool) {
		return register(_token);
	}

	// Implements AccountsIndex
	function time(address _token) public pure returns(uint256) {
		_token;
		return 0;
	}

	// Implements AccountsIndexMutable
	function remove(address _token) external returns (bool) {
		uint256 i;
		uint256 l;

		require(isWriter[msg.sender] || msg.sender == owner, 'ERR_AXX');
		require(tokenIndex[_token] != bytes32(0), 'ERR_NOT_FOUND');

		l = tokens.length - 1;
		i = registry[tokenIndex[_token]];
		if (i < l) {
			tokens[i] = tokens[l];
			identifierList[i] = identifierList[l];
		}
		registry[tokenIndex[tokens[i]]] = i;
		tokens.pop();
		identifierList.pop();
		registry[tokenIndex[_token]] = 0;
		tokenIndex[_token] = bytes32(0);

		emit AddressRemoved(_token);
		return true;
	}

	// Implements AccountsIndexMutable
	function activate(address _token) public pure returns(bool) {
		_token;
		return false;
	}

	// Implements AccountsIndexMutable
	function deactivate(address _token) public pure returns(bool) {
		_token;
		return false;
	}


	// Implements AccountsIndex
	function entryCount() public view returns ( uint256 ) {
		return tokens.length - 1;
	}

	// Implements EIP173
	function transferOwnership(address _newOwner) public returns (bool) {
		address oldOwner;

		require(msg.sender == owner);
		oldOwner = owner;
		owner = _newOwner;

		emit OwnershipTransferred(oldOwner, owner);

		return true;
	}

	// Implements Writer
	function addWriter(address _writer) public returns (bool) {
		require(owner == msg.sender);
		isWriter[_writer] = true;

		emit WriterAdded(_writer);

		return true;
	}

	// Implements Writer
	function deleteWriter(address _writer) public returns (bool) {
		require(owner == msg.sender);
		delete isWriter[_writer];

		emit WriterDeleted(_writer);

		return true;
	}

	// Implements Registry
	function identifier(uint256 _idx) public view returns(bytes32) {
		return identifierList[_idx + 1];
	}

	// Implements Registry
	function identifierCount() public view returns(uint256) {
		return identifierList.length - 1;
	}

	// Implements AccountsIndex	
	function have(address _token) public view returns(bool) {
		return tokenIndex[_token] != bytes32(0x0);
	}

	// Implements EIP165
	function supportsInterface(bytes4 _sum) public pure returns (bool) {
		if (_sum == 0xeffbf671) { // Registry
			return true;
		}
		if (_sum == 0xb7bca625) { // AccountsIndex 
			return true;
		}
		if (_sum == 0x9479f0ae) { // AccountsIndexMutable
			return true;
		}
		if (_sum == 0x01ffc9a7) { // EIP165
			return true;
		}
		if (_sum == 0x9493f8b2) { // EIP173
			return true;
		}
		if (_sum == 0x80c84bd6) { // Writer
			return true;
		}
		return false;
	}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_token","type":"address"}],"name":"AddressAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"_symbol","type":"bytes32"},{"indexed":false,"internalType":"address","name":"_token","type":"address"}],"name":"AddressKey","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_token","type":"address"}],"name":"AddressRemoved","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_writer","type":"address"}],"name":"WriterAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_writer","type":"address"}],"name":"WriterDeleted","type":"event"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"activate","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"add","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_writer","type":"address"}],"name":"addWriter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_key","type":"bytes32"}],"name":"addressOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"deactivate","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_writer","type":"address"}],"name":"deleteWriter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_idx","type":"uint256"}],"name":"entry","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"entryCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"have","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_idx","type":"uint256"}],"name":"identifier","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"identifierCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"identifierList","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"register","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"remove","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"_sum","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"time","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

0x6080604052348015600e575f5ffd5b50600480546001600160a01b031990811633179091556003805460018181019092557fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b0180549092169091556005805491820181555f9081527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db090910155610d0d806100995f395ff3fe608060405234801561000f575f5ffd5b5060043610610111575f3560e01c80634420e4861161009e578063bb34534c1161006e578063bb34534c14610230578063d56b7d4e14610243578063da2824a814610256578063e2095c0714610269578063f2fde38b1461027c575f5ffd5b80634420e486146101d15780635ae06f7e146101e45780637c67a3e2146101f75780638da5cb5b14610205575f5ffd5b80631c5a9d9c116100e45780631c5a9d9c1461017957806329092d0e1461018c5780633480c7041461019f5780633ea053eb146101795780633ef25013146101a7575f5ffd5b806301ffc9a7146101155780630a3b0a4f1461013d5780630cbb0f8314610150578063110c57b314610166575b5f5ffd5b610128610123366004610ae3565b61028f565b60405190151581526020015b60405180910390f35b61012861014b366004610b11565b610357565b610158610367565b604051908152602001610134565b610158610174366004610b37565b61037d565b610128610187366004610b11565b505f90565b61012861019a366004610b11565b61039c565b61015861064c565b6101286101b5366004610b11565b6001600160a01b03165f90815260026020526040902054151590565b6101286101df366004610b11565b61065d565b6101286101f2366004610b11565b6108f4565b610158610187366004610b11565b600454610218906001600160a01b031681565b6040516001600160a01b039091168152602001610134565b61021861023e366004610b37565b610966565b610158610251366004610b37565b6109a3565b610128610264366004610b11565b6109d1565b610218610277366004610b37565b610a3a565b61012861028a366004610b11565b610a72565b5f6001600160e01b0319821663effbf67160e01b036102b057506001919050565b6001600160e01b0319821663b7bca62560e01b036102d057506001919050565b6001600160e01b03198216634a3cf85760e11b036102f057506001919050565b6001600160e01b031982166301ffc9a760e01b0361031057506001919050565b6001600160e01b03198216634a49fc5960e11b0361033057506001919050565b6001600160e01b0319821663406425eb60e11b0361035057506001919050565b505f919050565b5f6103618261065d565b92915050565b6003545f9061037890600190610b62565b905090565b6005818154811061038c575f80fd5b5f91825260209091200154905081565b335f908152602081905260408120548190819060ff16806103c757506004546001600160a01b031633145b6104025760405162461bcd60e51b815260206004820152600760248201526608aa4a4be82b0b60cb1b60448201526064015b60405180910390fd5b6001600160a01b0384165f908152600260205260409020546104565760405162461bcd60e51b815260206004820152600d60248201526c11549497d393d517d193d55391609a1b60448201526064016103f9565b60035461046590600190610b62565b6001600160a01b0385165f9081526002602090815260408083205483526001909152902054925090508082101561053a57600381815481106104a9576104a9610b75565b5f91825260209091200154600380546001600160a01b0390921691849081106104d4576104d4610b75565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b031602179055506005818154811061051257610512610b75565b905f5260205f2001546005838154811061052e5761052e610b75565b5f918252602090912001555b8160015f60025f6003878154811061055457610554610b75565b5f9182526020808320909101546001600160a01b031683528281019390935260409182018120548452918301939093529101902055600380548061059a5761059a610b89565b5f8281526020902081015f1990810180546001600160a01b031916905501905560058054806105cb576105cb610b89565b5f82815260208082205f1990840181018390559092019092556001600160a01b03861680835260028083526040808520805486526001855281862086905583865291845293905591519182527f24a12366c02e13fe4a9e03d86a8952e85bb74a456c16e4a18b6d8295700b74bb910160405180910390a15060019392505050565b6005545f9061037890600190610b62565b335f9081526020819052604081205460ff168061068457506004546001600160a01b031633145b6106ba5760405162461bcd60e51b815260206004820152600760248201526608aa4a4be82b0b60cb1b60448201526064016103f9565b60408051600481526024810182526020810180516001600160e01b03166395d89b4160e01b17905290516060915f918291829182916001600160a01b038916916107049190610bbf565b5f604051808303815f865af19150503d805f811461073d576040519150601f19603f3d011682016040523d82523d5f602084013e610742565b606091505b509150915081610750575f5ffd5b808060200190518101906107649190610bee565b94506020855111156107b85760405162461bcd60e51b815260206004820152601960248201527f4552525f544f4b454e5f53594d424f4c5f544f4f5f4c4f4e470000000000000060448201526064016103f9565b6107c185610c9e565b5f81815260016020526040902054909450925082156107de575f5ffd5b600380545f8681526001602081815260408084208590558285019095557fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b90930180546001600160a01b0319166001600160a01b038d169081179091556005805492830190557f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db09091018890558082526002835290839020879055915191825285917f3465c39c7e9b14641553cf015fbfe670207bd64c689d17806d885bda47899feb910160405180910390a26040516001600160a01b03881681527fa226db3f664042183ee0281230bba26cbf7b5057e50aee7f25a175ff45ce4d7f9060200160405180910390a15060019695505050505050565b6004545f906001600160a01b0316331461090c575f5ffd5b6001600160a01b0382165f8181526020818152604091829020805460ff1916905590519182527f9002f14780245e47491e7a2caae4712e7cea2e298e4e76c6916845145b90a51c91015b60405180910390a1506001919050565b5f81815260016020526040812054600380548290811061098857610988610b75565b5f918252602090912001546001600160a01b03169392505050565b5f60056109b1836001610cc4565b815481106109c1576109c1610b75565b905f5260205f2001549050919050565b6004545f906001600160a01b031633146109e9575f5ffd5b6001600160a01b0382165f8181526020818152604091829020805460ff1916600117905590519182527f6ff3aa2ea7b53070f6d9d07a445d338d89e8edef44250ffa8be19f53910d4a2e9101610956565b5f6003610a48836001610cc4565b81548110610a5857610a58610b75565b5f918252602090912001546001600160a01b031692915050565b6004545f9081906001600160a01b03163314610a8c575f5ffd5b50600480546001600160a01b038481166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a350600192915050565b5f60208284031215610af3575f5ffd5b81356001600160e01b031981168114610b0a575f5ffd5b9392505050565b5f60208284031215610b21575f5ffd5b81356001600160a01b0381168114610b0a575f5ffd5b5f60208284031215610b47575f5ffd5b5035919050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561036157610361610b4e565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52603160045260245ffd5b5f5b83811015610bb7578181015183820152602001610b9f565b50505f910152565b5f8251610bd0818460208701610b9d565b9190910192915050565b634e487b7160e01b5f52604160045260245ffd5b5f60208284031215610bfe575f5ffd5b815167ffffffffffffffff811115610c14575f5ffd5b8201601f81018413610c24575f5ffd5b805167ffffffffffffffff811115610c3e57610c3e610bda565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610c6d57610c6d610bda565b604052818152828201602001861015610c84575f5ffd5b610c95826020830160208601610b9d565b95945050505050565b80516020808301519190811015610cbe575f198160200360031b1b821691505b50919050565b8082018082111561036157610361610b4e56fea2646970667358221220d811ffbef95008430fdbcbd1be577e494df5922ae3360428964028d20a97be2e64736f6c634300081e00336decb85d010080000000000000000000000000d08913a93c2c28b2bf6717264378c57083a5ef5c0000000000000000000000005523058cdffe5f3c1eadadd5015e55c6e00fb43900000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405234801561000f575f5ffd5b5060043610610111575f3560e01c80634420e4861161009e578063bb34534c1161006e578063bb34534c14610230578063d56b7d4e14610243578063da2824a814610256578063e2095c0714610269578063f2fde38b1461027c575f5ffd5b80634420e486146101d15780635ae06f7e146101e45780637c67a3e2146101f75780638da5cb5b14610205575f5ffd5b80631c5a9d9c116100e45780631c5a9d9c1461017957806329092d0e1461018c5780633480c7041461019f5780633ea053eb146101795780633ef25013146101a7575f5ffd5b806301ffc9a7146101155780630a3b0a4f1461013d5780630cbb0f8314610150578063110c57b314610166575b5f5ffd5b610128610123366004610ae3565b61028f565b60405190151581526020015b60405180910390f35b61012861014b366004610b11565b610357565b610158610367565b604051908152602001610134565b610158610174366004610b37565b61037d565b610128610187366004610b11565b505f90565b61012861019a366004610b11565b61039c565b61015861064c565b6101286101b5366004610b11565b6001600160a01b03165f90815260026020526040902054151590565b6101286101df366004610b11565b61065d565b6101286101f2366004610b11565b6108f4565b610158610187366004610b11565b600454610218906001600160a01b031681565b6040516001600160a01b039091168152602001610134565b61021861023e366004610b37565b610966565b610158610251366004610b37565b6109a3565b610128610264366004610b11565b6109d1565b610218610277366004610b37565b610a3a565b61012861028a366004610b11565b610a72565b5f6001600160e01b0319821663effbf67160e01b036102b057506001919050565b6001600160e01b0319821663b7bca62560e01b036102d057506001919050565b6001600160e01b03198216634a3cf85760e11b036102f057506001919050565b6001600160e01b031982166301ffc9a760e01b0361031057506001919050565b6001600160e01b03198216634a49fc5960e11b0361033057506001919050565b6001600160e01b0319821663406425eb60e11b0361035057506001919050565b505f919050565b5f6103618261065d565b92915050565b6003545f9061037890600190610b62565b905090565b6005818154811061038c575f80fd5b5f91825260209091200154905081565b335f908152602081905260408120548190819060ff16806103c757506004546001600160a01b031633145b6104025760405162461bcd60e51b815260206004820152600760248201526608aa4a4be82b0b60cb1b60448201526064015b60405180910390fd5b6001600160a01b0384165f908152600260205260409020546104565760405162461bcd60e51b815260206004820152600d60248201526c11549497d393d517d193d55391609a1b60448201526064016103f9565b60035461046590600190610b62565b6001600160a01b0385165f9081526002602090815260408083205483526001909152902054925090508082101561053a57600381815481106104a9576104a9610b75565b5f91825260209091200154600380546001600160a01b0390921691849081106104d4576104d4610b75565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b031602179055506005818154811061051257610512610b75565b905f5260205f2001546005838154811061052e5761052e610b75565b5f918252602090912001555b8160015f60025f6003878154811061055457610554610b75565b5f9182526020808320909101546001600160a01b031683528281019390935260409182018120548452918301939093529101902055600380548061059a5761059a610b89565b5f8281526020902081015f1990810180546001600160a01b031916905501905560058054806105cb576105cb610b89565b5f82815260208082205f1990840181018390559092019092556001600160a01b03861680835260028083526040808520805486526001855281862086905583865291845293905591519182527f24a12366c02e13fe4a9e03d86a8952e85bb74a456c16e4a18b6d8295700b74bb910160405180910390a15060019392505050565b6005545f9061037890600190610b62565b335f9081526020819052604081205460ff168061068457506004546001600160a01b031633145b6106ba5760405162461bcd60e51b815260206004820152600760248201526608aa4a4be82b0b60cb1b60448201526064016103f9565b60408051600481526024810182526020810180516001600160e01b03166395d89b4160e01b17905290516060915f918291829182916001600160a01b038916916107049190610bbf565b5f604051808303815f865af19150503d805f811461073d576040519150601f19603f3d011682016040523d82523d5f602084013e610742565b606091505b509150915081610750575f5ffd5b808060200190518101906107649190610bee565b94506020855111156107b85760405162461bcd60e51b815260206004820152601960248201527f4552525f544f4b454e5f53594d424f4c5f544f4f5f4c4f4e470000000000000060448201526064016103f9565b6107c185610c9e565b5f81815260016020526040902054909450925082156107de575f5ffd5b600380545f8681526001602081815260408084208590558285019095557fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b90930180546001600160a01b0319166001600160a01b038d169081179091556005805492830190557f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db09091018890558082526002835290839020879055915191825285917f3465c39c7e9b14641553cf015fbfe670207bd64c689d17806d885bda47899feb910160405180910390a26040516001600160a01b03881681527fa226db3f664042183ee0281230bba26cbf7b5057e50aee7f25a175ff45ce4d7f9060200160405180910390a15060019695505050505050565b6004545f906001600160a01b0316331461090c575f5ffd5b6001600160a01b0382165f8181526020818152604091829020805460ff1916905590519182527f9002f14780245e47491e7a2caae4712e7cea2e298e4e76c6916845145b90a51c91015b60405180910390a1506001919050565b5f81815260016020526040812054600380548290811061098857610988610b75565b5f918252602090912001546001600160a01b03169392505050565b5f60056109b1836001610cc4565b815481106109c1576109c1610b75565b905f5260205f2001549050919050565b6004545f906001600160a01b031633146109e9575f5ffd5b6001600160a01b0382165f8181526020818152604091829020805460ff1916600117905590519182527f6ff3aa2ea7b53070f6d9d07a445d338d89e8edef44250ffa8be19f53910d4a2e9101610956565b5f6003610a48836001610cc4565b81548110610a5857610a58610b75565b5f918252602090912001546001600160a01b031692915050565b6004545f9081906001600160a01b03163314610a8c575f5ffd5b50600480546001600160a01b038481166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a350600192915050565b5f60208284031215610af3575f5ffd5b81356001600160e01b031981168114610b0a575f5ffd5b9392505050565b5f60208284031215610b21575f5ffd5b81356001600160a01b0381168114610b0a575f5ffd5b5f60208284031215610b47575f5ffd5b5035919050565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561036157610361610b4e565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52603160045260245ffd5b5f5b83811015610bb7578181015183820152602001610b9f565b50505f910152565b5f8251610bd0818460208701610b9d565b9190910192915050565b634e487b7160e01b5f52604160045260245ffd5b5f60208284031215610bfe575f5ffd5b815167ffffffffffffffff811115610c14575f5ffd5b8201601f81018413610c24575f5ffd5b805167ffffffffffffffff811115610c3e57610c3e610bda565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715610c6d57610c6d610bda565b604052818152828201602001861015610c84575f5ffd5b610c95826020830160208601610b9d565b95945050505050565b80516020808301519190811015610cbe575f198160200360031b1b821691505b50919050565b8082018082111561036157610361610b4e56fea2646970667358221220d811ffbef95008430fdbcbd1be577e494df5922ae3360428964028d20a97be2e64736f6c634300081e0033

Deployed Bytecode Sourcemap

77:4956:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4551:479;;;;;;:::i;:::-;;:::i;:::-;;;470:14:1;;463:22;445:41;;433:2;418:18;4551:479:0;;;;;;;;2211:84;;;;;;:::i;:::-;;:::i;3352:88::-;;;:::i;:::-;;;934:25:1;;;922:2;907:18;3352:88:0;788:177:1;334:31:0;;;;;;:::i;:::-;;:::i;3085:93::-;;;;;;:::i;:::-;-1:-1:-1;3139:4:0;;3085:93;2460:583;;;;;;:::i;:::-;;:::i;4282:98::-;;;:::i;4416:107::-;;;;;;:::i;:::-;-1:-1:-1;;;;;4484:18:0;4466:4;4484:18;;;:10;:18;;;;;;:34;;;4416:107;1398:778;;;;;;:::i;:::-;;:::i;3938:180::-;;;;;;:::i;:::-;;:::i;2330:88::-;;;;;;:::i;283:20::-;;;;;-1:-1:-1;;;;;283:20:0;;;;;;-1:-1:-1;;;;;1501:32:1;;;1483:51;;1471:2;1456:18;283:20:0;1337:203:1;1124:136:0;;;;;;:::i;:::-;;:::i;4148:104::-;;;;;;:::i;:::-;;:::i;3735:175::-;;;;;;:::i;:::-;;:::i;994:94::-;;;;;;:::i;:::-;;:::i;3468:239::-;;;;;;:::i;:::-;;:::i;4551:479::-;4612:4;-1:-1:-1;;;;;;4627:18:0;;-1:-1:-1;;;4627:18:0;4623:59;;-1:-1:-1;4672:4:0;;4551:479;-1:-1:-1;4551:479:0:o;4623:59::-;-1:-1:-1;;;;;;4690:18:0;;-1:-1:-1;;;4690:18:0;4686:65;;-1:-1:-1;4741:4:0;;4551:479;-1:-1:-1;4551:479:0:o;4686:65::-;-1:-1:-1;;;;;;4759:18:0;;-1:-1:-1;;;4759:18:0;4755:71;;-1:-1:-1;4816:4:0;;4551:479;-1:-1:-1;4551:479:0:o;4755:71::-;-1:-1:-1;;;;;;4834:18:0;;-1:-1:-1;;;4834:18:0;4830:57;;-1:-1:-1;4877:4:0;;4551:479;-1:-1:-1;4551:479:0:o;4830:57::-;-1:-1:-1;;;;;;4895:18:0;;-1:-1:-1;;;4895:18:0;4891:57;;-1:-1:-1;4938:4:0;;4551:479;-1:-1:-1;4551:479:0:o;4891:57::-;-1:-1:-1;;;;;;4956:18:0;;-1:-1:-1;;;4956:18:0;4952:57;;-1:-1:-1;4999:4:0;;4551:479;-1:-1:-1;4551:479:0:o;4952:57::-;-1:-1:-1;5020:5:0;;4551:479;-1:-1:-1;4551:479:0:o;2211:84::-;2256:4;2274:16;2283:6;2274:8;:16::i;:::-;2267:23;2211:84;-1:-1:-1;;2211:84:0:o;3352:88::-;3418:6;:13;3396:7;;3418:17;;3434:1;;3418:17;:::i;:::-;3411:24;;3352:88;:::o;334:31::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;334:31:0;:::o;2460:583::-;2568:10;2510:4;2559:20;;;;;;;;;;;2510:4;;;;2559:20;;;:43;;-1:-1:-1;2597:5:0;;-1:-1:-1;;;;;2597:5:0;2583:10;:19;2559:43;2551:63;;;;-1:-1:-1;;;2551:63:0;;2197:2:1;2551:63:0;;;2179:21:1;2236:1;2216:18;;;2209:29;-1:-1:-1;;;2254:18:1;;;2247:37;2301:18;;2551:63:0;;;;;;;;;-1:-1:-1;;;;;2627:18:0;;2657:1;2627:18;;;:10;:18;;;;;;2619:58;;;;-1:-1:-1;;;2619:58:0;;2532:2:1;2619:58:0;;;2514:21:1;2571:2;2551:18;;;2544:30;-1:-1:-1;;;2590:18:1;;;2583:43;2643:18;;2619:58:0;2330:337:1;2619:58:0;2688:6;:13;:17;;2704:1;;2688:17;:::i;:::-;-1:-1:-1;;;;;2723:18:0;;2714:28;2723:18;;;:10;:18;;;;;;;;;2714:28;;:8;:28;;;;;;;-1:-1:-1;2684:21:0;-1:-1:-1;2751:5:0;;;2747:87;;;2776:6;2783:1;2776:9;;;;;;;;:::i;:::-;;;;;;;;;;;2764:6;:9;;-1:-1:-1;;;;;2776:9:0;;;;2771:1;;2764:9;;;;;;:::i;:::-;;;;;;;;;:21;;;;;-1:-1:-1;;;;;2764:21:0;;;;;-1:-1:-1;;;;;2764:21:0;;;;;;2811:14;2826:1;2811:17;;;;;;;;:::i;:::-;;;;;;;;;2791:14;2806:1;2791:17;;;;;;;;:::i;:::-;;;;;;;;;;:37;2747:87;2872:1;2838:8;:31;2847:10;:21;2858:6;2865:1;2858:9;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;2858:9:0;2847:21;;;;;;;;;;;;;;;;2838:31;;;;;;;;;;;;;:35;2878:6;:12;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;2878:12:0;;;;;-1:-1:-1;;;;;;2878:12:0;;;;;;2895:14;:20;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;2895:20:0;;;;;;;;;;;;;;-1:-1:-1;;;;;2929:18:0;;;;;:10;:18;;;;;;;;;2920:28;;2895:20;2920:28;;;;;:32;;;2957:18;;;;;;:31;;;3000:22;;1483:51:1;;;3000:22:0;;1456:18:1;3000:22:0;;;;;;;-1:-1:-1;3034:4:0;;2460:583;-1:-1:-1;;;2460:583:0:o;4282:98::-;4350:14;:21;4329:7;;4350:25;;4374:1;;4350:25;:::i;1398:778::-;1476:10;1448:4;1467:20;;;;;;;;;;;;;;:43;;-1:-1:-1;1505:5:0;;-1:-1:-1;;;;;1505:5:0;1491:10;:19;1467:43;1459:63;;;;-1:-1:-1;;;1459:63:0;;2197:2:1;1459:63:0;;;2179:21:1;2236:1;2216:18;;;2209:29;-1:-1:-1;;;2254:18:1;;;2247:37;2301:18;;1459:63:0;1995:330:1;1459:63:0;1648:35;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1648:35:0;-1:-1:-1;;;1648:35:0;;;1636:48;;1529:25;;1559:24;;;;;;;;-1:-1:-1;;;;;1636:11:0;;;:48;;1648:35;1636:48;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1606:78;;;;1697:3;1689:12;;;;;;1734:2;1723:23;;;;;;;;;;;;:::i;:::-;1708:38;;1782:2;1759:12;:19;:25;;1751:63;;;;-1:-1:-1;;;1751:63:0;;4737:2:1;1751:63:0;;;4719:21:1;4776:2;4756:18;;;4749:30;4815:27;4795:18;;;4788:55;4860:18;;1751:63:0;4535:349:1;1751:63:0;1838:21;1846:12;1838:21;:::i;:::-;1872:26;;;;:8;:26;;;;;;1819:40;;-1:-1:-1;1872:26:0;-1:-1:-1;1911:8:0;;1903:17;;;;;;1956:6;:13;;1927:26;;;;:8;:26;;;;;;;;:42;;;1974:19;;;;;;;;;;;;-1:-1:-1;;;;;;1974:19:0;-1:-1:-1;;;;;1974:19:0;;;;;;;;1998:14;:37;;;;;;;;;;;;;;2040:18;;;:10;:18;;;;;;:37;;;2089:36;;1483:51:1;;;1927:26:0;;2089:36;;1456:18:1;2089:36:0;;;;;;;2135:20;;-1:-1:-1;;;;;1501:32:1;;1483:51;;2135:20:0;;1471:2:1;1456:18;2135:20:0;;;;;;;-1:-1:-1;2167:4:0;;1398:778;-1:-1:-1;;;;;;1398:778:0:o;3938:180::-;4012:5;;3993:4;;-1:-1:-1;;;;;4012:5:0;4021:10;4012:19;4004:28;;;;;;-1:-1:-1;;;;;4044:17:0;;:8;:17;;;;;;;;;;;;4037:24;;-1:-1:-1;;4037:24:0;;;4073:22;;1483:51:1;;;4073:22:0;;1456:18:1;4073:22:0;;;;;;;;-1:-1:-1;4109:4:0;;3938:180;-1:-1:-1;3938:180:0:o;1124:136::-;1179:7;1218:14;;;:8;:14;;;;;;1244:6;:11;;1218:14;;1244:11;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;1244:11:0;;1124:136;-1:-1:-1;;;1124:136:0:o;4148:104::-;4202:7;4223:14;4238:8;:4;4245:1;4238:8;:::i;:::-;4223:24;;;;;;;;:::i;:::-;;;;;;;;;4216:31;;4148:104;;;:::o;3735:175::-;3806:5;;3787:4;;-1:-1:-1;;;;;3806:5:0;3815:10;3806:19;3798:28;;;;;;-1:-1:-1;;;;;3831:17:0;;:8;:17;;;;;;;;;;;;:24;;-1:-1:-1;;3831:24:0;3851:4;3831:24;;;3867:20;;1483:51:1;;;3867:20:0;;1456:18:1;3867:20:0;1337:203:1;994:94:0;1045:7;1067:6;1074:8;:4;1081:1;1074:8;:::i;:::-;1067:16;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;1067:16:0;;994:94;-1:-1:-1;;994:94:0:o;3468:239::-;3586:5;;3530:4;;;;-1:-1:-1;;;;;3586:5:0;3572:10;:19;3564:28;;;;;;-1:-1:-1;3608:5:0;;;-1:-1:-1;;;;;3618:17:0;;;-1:-1:-1;;;;;;3618:17:0;;;;;;;3647:37;;3608:5;;;3618:17;3608:5;;3647:37;;3608:5;;3647:37;-1:-1:-1;3698:4:0;;3468:239;-1:-1:-1;;3468:239:0:o;14:286:1:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:1;;209:43;;199:71;;266:1;263;256:12;199:71;289:5;14:286;-1:-1:-1;;;14:286:1:o;497:::-;556:6;609:2;597:9;588:7;584:23;580:32;577:52;;;625:1;622;615:12;577:52;651:23;;-1:-1:-1;;;;;703:31:1;;693:42;;683:70;;749:1;746;739:12;970:180;1029:6;1082:2;1070:9;1061:7;1057:23;1053:32;1050:52;;;1098:1;1095;1088:12;1050:52;-1:-1:-1;1121:23:1;;970:180;-1:-1:-1;970:180:1:o;1730:127::-;1791:10;1786:3;1782:20;1779:1;1772:31;1822:4;1819:1;1812:15;1846:4;1843:1;1836:15;1862:128;1929:9;;;1950:11;;;1947:37;;;1964:18;;:::i;2672:127::-;2733:10;2728:3;2724:20;2721:1;2714:31;2764:4;2761:1;2754:15;2788:4;2785:1;2778:15;2804:127;2865:10;2860:3;2856:20;2853:1;2846:31;2896:4;2893:1;2886:15;2920:4;2917:1;2910:15;2936:250;3021:1;3031:113;3045:6;3042:1;3039:13;3031:113;;;3121:11;;;3115:18;3102:11;;;3095:39;3067:2;3060:10;3031:113;;;-1:-1:-1;;3178:1:1;3160:16;;3153:27;2936:250::o;3191:287::-;3320:3;3358:6;3352:13;3374:66;3433:6;3428:3;3421:4;3413:6;3409:17;3374:66;:::i;:::-;3456:16;;;;;3191:287;-1:-1:-1;;3191:287:1:o;3483:127::-;3544:10;3539:3;3535:20;3532:1;3525:31;3575:4;3572:1;3565:15;3599:4;3596:1;3589:15;3615:915;3694:6;3747:2;3735:9;3726:7;3722:23;3718:32;3715:52;;;3763:1;3760;3753:12;3715:52;3796:9;3790:16;3829:18;3821:6;3818:30;3815:50;;;3861:1;3858;3851:12;3815:50;3884:22;;3937:4;3929:13;;3925:27;-1:-1:-1;3915:55:1;;3966:1;3963;3956:12;3915:55;3999:2;3993:9;4025:18;4017:6;4014:30;4011:56;;;4047:18;;:::i;:::-;4096:2;4090:9;4188:2;4150:17;;-1:-1:-1;;4146:31:1;;;4179:2;4142:40;4138:54;4126:67;;4223:18;4208:34;;4244:22;;;4205:62;4202:88;;;4270:18;;:::i;:::-;4306:2;4299:22;4330;;;4371:15;;;4388:2;4367:24;4364:37;-1:-1:-1;4361:57:1;;;4414:1;4411;4404:12;4361:57;4427:72;4492:6;4487:2;4479:6;4475:15;4470:2;4466;4462:11;4427:72;:::i;:::-;4518:6;3615:915;-1:-1:-1;;;;;3615:915:1:o;4889:297::-;5007:12;;5054:4;5043:16;;;5037:23;;5007:12;5072:16;;5069:111;;;5166:1;5162:6;5152;5146:4;5142:17;5139:1;5135:25;5131:38;5124:5;5120:50;5111:59;;5069:111;;4889:297;;;:::o;5191:125::-;5256:9;;;5277:10;;;5274:36;;;5290:18;;:::i

Swarm Source

ipfs://d811ffbef95008430fdbcbd1be577e494df5922ae3360428964028d20a97be2e

Block Transaction Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
0xFf038331fB76e8C58bfE80FB3e6E8E6F81D26e3F
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ 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.