CELO Price: $0.09 (+0.36%)
Gas: 25 GWei

Contract

0xD6828Ff89F9dA625bFd68907e3b0fd19cC7AECf6

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
Set Limit For569034272026-01-19 6:29:4515 days ago1768804185IN
0xD6828Ff8...9cC7AECf6
0 CELO0.0012833525.001
Set Limit For565823022026-01-15 13:17:4019 days ago1768483060IN
0xD6828Ff8...9cC7AECf6
0 CELO0.0012848525.001
Set Limit For565820132026-01-15 13:12:5119 days ago1768482771IN
0xD6828Ff8...9cC7AECf6
0 CELO0.0012833525.001
Set Limit For565819502026-01-15 13:11:4819 days ago1768482708IN
0xD6828Ff8...9cC7AECf6
0 CELO0.0012833525.001
Transfer Ownersh...565818882026-01-15 13:10:4619 days ago1768482646IN
0xD6828Ff8...9cC7AECf6
0 CELO0.000743525.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 0xca685060...838023AA6
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
Limiter

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;

// Author:	Louis Holbrook <[email protected]> 0826EDA1702D1E87C6E2875121D2E7BB88C2A746
// SPDX-License-Identifier: AGPL-3.0-or-later
// File-Version: 1
// Description: Registry of allowed ERC20 balance limits per-token and per-holder.

contract Limiter {
	address public owner;

	mapping ( address => mapping ( address => uint256 ) ) limit;

	// EIP173
	event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); // EIP173
	
	event LimitSet(address indexed token, address indexed holder, uint256 value);

	constructor() {
		owner = msg.sender;
	}

	function limitOf(address _token, address _holder) public view returns (uint256) {
		return limit[_token][_holder];
	}

	function setLimit(address _token, uint256 _value) public {
		limit[_token][msg.sender] = _value;
		emit LimitSet(_token, msg.sender, _value);
	}

	function setLimitFor(address _token, address _holder, uint256 _value) public {
		uint256 sz;
		require(msg.sender == owner ||  msg.sender == _holder, 'ERR_AXX');
		assembly {
			sz := extcodesize(_holder)
		}
		require(sz > 0, 'ERR_ACCOUNT');
		limit[_token][_holder] = _value;
		emit LimitSet(_token, _holder, _value);
	}

	// 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 EIP165
	function supportsInterface(bytes4 _sum) public pure returns (bool) {
		if (_sum == 0x01ffc9a7) { // ERC165
			return true;
		}
		if (_sum == 0x9493f8b2) { // ERC173
			return true;
		}
		if (_sum == 0x23778613) { // TokenLimit
			return true;
		}
		return false;
	}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"holder","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"LimitSet","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":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_holder","type":"address"}],"name":"limitOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"setLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_holder","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"setLimitFor","outputs":[],"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":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

0x6080604052348015600e575f5ffd5b505f80546001600160a01b031916331790556104908061002d5f395ff3fe608060405234801561000f575f5ffd5b5060043610610060575f3560e01c806301ffc9a714610064578063237786131461008c57806336db43b5146100d25780638da5cb5b146100e7578063bdd5544014610111578063f2fde38b14610124575b5f5ffd5b610077610072366004610365565b610137565b60405190151581526020015b60405180910390f35b6100c461009a3660046103ae565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b604051908152602001610083565b6100e56100e03660046103df565b61019f565b005b5f546100f9906001600160a01b031681565b6040516001600160a01b039091168152602001610083565b6100e561011f366004610407565b6101fd565b610077610132366004610441565b6102f8565b5f6001600160e01b031982166301ffc9a760e01b0361015857506001919050565b6001600160e01b03198216634a49fc5960e11b0361017857506001919050565b6001600160e01b03198216632377861360e01b0361019857506001919050565b505f919050565b6001600160a01b0382165f8181526001602090815260408083203380855290835292819020859055518481529192917f8aa6856e3197c997992720c057a925dff13f6893a75f1a7228a2d4eafe117b84910160405180910390a35050565b5f80546001600160a01b031633148061021e5750336001600160a01b038416145b6102595760405162461bcd60e51b815260206004820152600760248201526608aa4a4be82b0b60cb1b60448201526064015b60405180910390fd5b50813b806102975760405162461bcd60e51b815260206004820152600b60248201526a11549497d050d0d3d5539560aa1b6044820152606401610250565b6001600160a01b038481165f8181526001602090815260408083209488168084529482529182902086905590518581527f8aa6856e3197c997992720c057a925dff13f6893a75f1a7228a2d4eafe117b84910160405180910390a350505050565b5f805481906001600160a01b03163314610310575f5ffd5b505f80546001600160a01b038481166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350600192915050565b5f60208284031215610375575f5ffd5b81356001600160e01b03198116811461038c575f5ffd5b9392505050565b80356001600160a01b03811681146103a9575f5ffd5b919050565b5f5f604083850312156103bf575f5ffd5b6103c883610393565b91506103d660208401610393565b90509250929050565b5f5f604083850312156103f0575f5ffd5b6103f983610393565b946020939093013593505050565b5f5f5f60608486031215610419575f5ffd5b61042284610393565b925061043060208501610393565b929592945050506040919091013590565b5f60208284031215610451575f5ffd5b61038c8261039356fea2646970667358221220b96149a79dc1a073bdc6d1baf3491daaabe7087927c6692d0cf4d160037d3b1d64736f6c634300081e00336decb85d010080000000000000000000000000d08913a93c2c28b2bf6717264378c57083a5ef5c0000000000000000000000005523058cdffe5f3c1eadadd5015e55c6e00fb43900000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405234801561000f575f5ffd5b5060043610610060575f3560e01c806301ffc9a714610064578063237786131461008c57806336db43b5146100d25780638da5cb5b146100e7578063bdd5544014610111578063f2fde38b14610124575b5f5ffd5b610077610072366004610365565b610137565b60405190151581526020015b60405180910390f35b6100c461009a3660046103ae565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b604051908152602001610083565b6100e56100e03660046103df565b61019f565b005b5f546100f9906001600160a01b031681565b6040516001600160a01b039091168152602001610083565b6100e561011f366004610407565b6101fd565b610077610132366004610441565b6102f8565b5f6001600160e01b031982166301ffc9a760e01b0361015857506001919050565b6001600160e01b03198216634a49fc5960e11b0361017857506001919050565b6001600160e01b03198216632377861360e01b0361019857506001919050565b505f919050565b6001600160a01b0382165f8181526001602090815260408083203380855290835292819020859055518481529192917f8aa6856e3197c997992720c057a925dff13f6893a75f1a7228a2d4eafe117b84910160405180910390a35050565b5f80546001600160a01b031633148061021e5750336001600160a01b038416145b6102595760405162461bcd60e51b815260206004820152600760248201526608aa4a4be82b0b60cb1b60448201526064015b60405180910390fd5b50813b806102975760405162461bcd60e51b815260206004820152600b60248201526a11549497d050d0d3d5539560aa1b6044820152606401610250565b6001600160a01b038481165f8181526001602090815260408083209488168084529482529182902086905590518581527f8aa6856e3197c997992720c057a925dff13f6893a75f1a7228a2d4eafe117b84910160405180910390a350505050565b5f805481906001600160a01b03163314610310575f5ffd5b505f80546001600160a01b038481166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350600192915050565b5f60208284031215610375575f5ffd5b81356001600160e01b03198116811461038c575f5ffd5b9392505050565b80356001600160a01b03811681146103a9575f5ffd5b919050565b5f5f604083850312156103bf575f5ffd5b6103c883610393565b91506103d660208401610393565b90509250929050565b5f5f604083850312156103f0575f5ffd5b6103f983610393565b946020939093013593505050565b5f5f5f60608486031215610419575f5ffd5b61042284610393565b925061043060208501610393565b929592945050506040919091013590565b5f60208284031215610451575f5ffd5b61038c8261039356fea2646970667358221220b96149a79dc1a073bdc6d1baf3491daaabe7087927c6692d0cf4d160037d3b1d64736f6c634300081e0033

Deployed Bytecode Sourcemap

266:1532:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1519:276;;;;;;:::i;:::-;;:::i;:::-;;;470:14:1;;463:22;445:41;;433:2;418:18;1519:276:0;;;;;;;;619:119;;;;;;:::i;:::-;-1:-1:-1;;;;;711:13:0;;;690:7;711:13;;;:5;:13;;;;;;;;:22;;;;;;;;;;;;;619:119;;;;1086:25:1;;;1074:2;1059:18;619:119:0;940:177:1;743:147:0;;;;;;:::i;:::-;;:::i;:::-;;287:20;;;;;-1:-1:-1;;;;;287:20:0;;;;;;-1:-1:-1;;;;;1591:32:1;;;1573:51;;1561:2;1546:18;287:20:0;1427:203:1;895:331:0;;;;;;:::i;:::-;;:::i;1254:237::-;;;;;;:::i;:::-;;:::i;1519:276::-;1580:4;-1:-1:-1;;;;;;1595:18:0;;-1:-1:-1;;;1595:18:0;1591:57;;-1:-1:-1;1638:4:0;;1519:276;-1:-1:-1;1519:276:0:o;1591:57::-;-1:-1:-1;;;;;;1656:18:0;;-1:-1:-1;;;1656:18:0;1652:57;;-1:-1:-1;1699:4:0;;1519:276;-1:-1:-1;1519:276:0:o;1652:57::-;-1:-1:-1;;;;;;1717:18:0;;-1:-1:-1;;;1717:18:0;1713:61;;-1:-1:-1;1764:4:0;;1519:276;-1:-1:-1;1519:276:0:o;1713:61::-;-1:-1:-1;1785:5:0;;1519:276;-1:-1:-1;1519:276:0:o;743:147::-;-1:-1:-1;;;;;805:13:0;;;;;;:5;:13;;;;;;;;819:10;805:25;;;;;;;;;;:34;;;849:36;1086:25:1;;;819:10:0;;805:13;849:36;;1059:18:1;849:36:0;;;;;;;743:147;;:::o;895:331::-;977:10;1014:5;;-1:-1:-1;;;;;1014:5:0;1000:10;:19;;:45;;-1:-1:-1;1024:10:0;-1:-1:-1;;;;;1024:21:0;;;1000:45;992:65;;;;-1:-1:-1;;;992:65:0;;2407:2:1;992:65:0;;;2389:21:1;2446:1;2426:18;;;2419:29;-1:-1:-1;;;2464:18:1;;;2457:37;2511:18;;992:65:0;;;;;;;;;-1:-1:-1;1083:20:0;;1120:6;1112:30;;;;-1:-1:-1;;;1112:30:0;;2742:2:1;1112:30:0;;;2724:21:1;2781:2;2761:18;;;2754:30;-1:-1:-1;;;2800:18:1;;;2793:41;2851:18;;1112:30:0;2540:335:1;1112:30:0;-1:-1:-1;;;;;1147:13:0;;;;;;;:5;:13;;;;;;;;:22;;;;;;;;;;;;;:31;;;1188:33;;1086:25:1;;;1188:33:0;;1059:18:1;1188:33:0;;;;;;;972:254;895:331;;;:::o;1254:237::-;1316:4;1372:5;;1316:4;;-1:-1:-1;;;;;1372:5:0;1358:10;:19;1350:28;;;;;;-1:-1:-1;1394:5:0;;;-1:-1:-1;;;;;1404:17:0;;;-1:-1:-1;;;;;;1404:17:0;;;;;;1433:37;;1394:5;;;;;;;1433:37;;1394:5;1433:37;-1:-1:-1;1482:4:0;;1254:237;-1:-1:-1;;1254:237: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:173::-;565:20;;-1:-1:-1;;;;;614:31:1;;604:42;;594:70;;660:1;657;650:12;594:70;497:173;;;:::o;675:260::-;743:6;751;804:2;792:9;783:7;779:23;775:32;772:52;;;820:1;817;810:12;772:52;843:29;862:9;843:29;:::i;:::-;833:39;;891:38;925:2;914:9;910:18;891:38;:::i;:::-;881:48;;675:260;;;;;:::o;1122:300::-;1190:6;1198;1251:2;1239:9;1230:7;1226:23;1222:32;1219:52;;;1267:1;1264;1257:12;1219:52;1290:29;1309:9;1290:29;:::i;:::-;1280:39;1388:2;1373:18;;;;1360:32;;-1:-1:-1;;;1122:300:1:o;1635:374::-;1712:6;1720;1728;1781:2;1769:9;1760:7;1756:23;1752:32;1749:52;;;1797:1;1794;1787:12;1749:52;1820:29;1839:9;1820:29;:::i;:::-;1810:39;;1868:38;1902:2;1891:9;1887:18;1868:38;:::i;:::-;1635:374;;1858:48;;-1:-1:-1;;;1975:2:1;1960:18;;;;1947:32;;1635:374::o;2014:186::-;2073:6;2126:2;2114:9;2105:7;2101:23;2097:32;2094:52;;;2142:1;2139;2132:12;2094:52;2165:29;2184:9;2165:29;:::i

Swarm Source

ipfs://b96149a79dc1a073bdc6d1baf3491daaabe7087927c6692d0cf4d160037d3b1d

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
0xD6828Ff89F9dA625bFd68907e3b0fd19cC7AECf6
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.