S Price: $0.059786 (+1.38%)
Gas: 55 Gwei

Contract

0x7348812573f62A241479516B8229FA2C03Fcb455

Overview

S Balance

Sonic LogoSonic LogoSonic Logo0 S

S Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Block
From
To
Register Me558019012025-11-19 17:40:1672 days ago1763574016IN
0x73488125...C03Fcb455
0 S0.0041949550.0001

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Cross-Chain Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
UsernameRegistry

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at SonicScan.org on 2025-11-19
*/

// SPDX-License-Identifier: MIT
pragma solidity 0.8.20;

/**
 * @title UsernameRegistry
 * @notice Maps @handles to SmartAccount addresses
 * @dev Handles are stored as keccak256 hashes for gas efficiency
 */
contract UsernameRegistry {
    // handleHash => SmartAccount address
    mapping(bytes32 => address) public handles;
    
    // SmartAccount address => handleHash (to enforce 1 account = 1 handle)
    mapping(address => bytes32) public accountToHandle;

    event HandleRegistered(bytes32 indexed handleHash, address indexed account, string handle);

    /**
     * @notice Register a @handle for a SmartAccount
     * @param account The SmartAccount address
     * @param handlePlaintext The plaintext handle for event logging
     * @dev Hash is computed internally to prevent mismatch attacks
     */
    function register(
        address account,
        string calldata handlePlaintext
    ) external {
        // Compute hash internally to ensure handlePlaintext matches handleHash
        bytes32 handleHash = keccak256(abi.encodePacked(handlePlaintext));
        
        require(account != address(0), "UsernameRegistry: account cannot be zero address");
        require(handles[handleHash] == address(0), "UsernameRegistry: handle already taken");
        require(accountToHandle[account] == bytes32(0), "UsernameRegistry: account already has a handle");
        require(msg.sender == account, "UsernameRegistry: caller must be the account");

        handles[handleHash] = account;
        accountToHandle[account] = handleHash;

        emit HandleRegistered(handleHash, account, handlePlaintext);
    }

    /**
     * @notice Resolve a handle hash to SmartAccount address
     * @param handleHash The keccak256 hash of the lowercase handle
     * @return The SmartAccount address (address(0) if not registered)
     */
    function resolve(bytes32 handleHash) external view returns (address) {
        return handles[handleHash];
    }

    /**
     * @notice Helper to compute handle hash off-chain
     * @param handle The lowercase handle string (without '@')
     * @return The keccak256 hash
     */
    function computeHandleHash(string calldata handle) external pure returns (bytes32) {
        return keccak256(abi.encodePacked(handle));
    }

    /// @dev Register my contract on Sonic FeeM
    function registerMe() external {
        (bool _success,) = address(0xDC2B0D2Dd2b7759D97D50db4eabDC36973110830).call(
            abi.encodeWithSignature("selfRegister(uint256)", 237)
        );
        require(_success, "FeeM registration failed");
    }
}

Contract Security Audit

Contract ABI

API
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"handleHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"string","name":"handle","type":"string"}],"name":"HandleRegistered","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"accountToHandle","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"handle","type":"string"}],"name":"computeHandleHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"handles","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"string","name":"handlePlaintext","type":"string"}],"name":"register","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"registerMe","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"handleHash","type":"bytes32"}],"name":"resolve","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]

608060405234801561000f575f80fd5b506106888061001d5f395ff3fe608060405234801561000f575f80fd5b5060043610610060575f3560e01c806332434a2e146100645780635c23bdf51461007957806372b7961f146100be5780639a198d61146100eb5780639e087431146100f3578063d9adaf921461011b575b5f80fd5b610077610072366004610524565b61012e565b005b6100a1610087366004610573565b5f908152602081905260409020546001600160a01b031690565b6040516001600160a01b0390911681526020015b60405180910390f35b6100dd6100cc36600461058a565b60016020525f908152604090205481565b6040519081526020016100b5565b6100776103a6565b6100a1610101366004610573565b5f602081905290815260409020546001600160a01b031681565b6100dd6101293660046105aa565b610492565b5f82826040516020016101429291906105e9565b60408051601f19818403018152919052805160209091012090506001600160a01b0384166101d05760405162461bcd60e51b815260206004820152603060248201527f557365726e616d6552656769737472793a206163636f756e742063616e6e6f7460448201526f206265207a65726f206164647265737360801b60648201526084015b60405180910390fd5b5f818152602081905260409020546001600160a01b0316156102435760405162461bcd60e51b815260206004820152602660248201527f557365726e616d6552656769737472793a2068616e646c6520616c7265616479604482015265103a30b5b2b760d11b60648201526084016101c7565b6001600160a01b0384165f90815260016020526040902054156102bf5760405162461bcd60e51b815260206004820152602e60248201527f557365726e616d6552656769737472793a206163636f756e7420616c7265616460448201526d792068617320612068616e646c6560901b60648201526084016101c7565b336001600160a01b0385161461032c5760405162461bcd60e51b815260206004820152602c60248201527f557365726e616d6552656769737472793a2063616c6c6572206d75737420626560448201526b081d1a19481858d8dbdd5b9d60a21b60648201526084016101c7565b5f8181526020818152604080832080546001600160a01b0319166001600160a01b038916908117909155808452600190925291829020839055905182907fb51e24ca9479f1f48c99c45f4d89c5a1853cfab00d1852d28bb3ea9f1feb58c69061039890879087906105f8565b60405180910390a350505050565b60405160ed60248201525f9073dc2b0d2dd2b7759d97d50db4eabdc369731108309060440160408051601f198184030181529181526020820180516001600160e01b03166307983f4560e21b179052516104009190610626565b5f604051808303815f865af19150503d805f8114610439576040519150601f19603f3d011682016040523d82523d5f602084013e61043e565b606091505b505090508061048f5760405162461bcd60e51b815260206004820152601860248201527f4665654d20726567697374726174696f6e206661696c6564000000000000000060448201526064016101c7565b50565b5f82826040516020016104a69291906105e9565b60405160208183030381529060405280519060200120905092915050565b80356001600160a01b03811681146104da575f80fd5b919050565b5f8083601f8401126104ef575f80fd5b50813567ffffffffffffffff811115610506575f80fd5b60208301915083602082850101111561051d575f80fd5b9250929050565b5f805f60408486031215610536575f80fd5b61053f846104c4565b9250602084013567ffffffffffffffff81111561055a575f80fd5b610566868287016104df565b9497909650939450505050565b5f60208284031215610583575f80fd5b5035919050565b5f6020828403121561059a575f80fd5b6105a3826104c4565b9392505050565b5f80602083850312156105bb575f80fd5b823567ffffffffffffffff8111156105d1575f80fd5b6105dd858286016104df565b90969095509350505050565b818382375f9101908152919050565b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f82515f5b81811015610645576020818601810151858301520161062b565b505f92019182525091905056fea26469706673582212203b621747ab514261355e0f848c962c19872c9b2bf28d642a82115aab41bc992064736f6c63430008140033

Deployed Bytecode

0x608060405234801561000f575f80fd5b5060043610610060575f3560e01c806332434a2e146100645780635c23bdf51461007957806372b7961f146100be5780639a198d61146100eb5780639e087431146100f3578063d9adaf921461011b575b5f80fd5b610077610072366004610524565b61012e565b005b6100a1610087366004610573565b5f908152602081905260409020546001600160a01b031690565b6040516001600160a01b0390911681526020015b60405180910390f35b6100dd6100cc36600461058a565b60016020525f908152604090205481565b6040519081526020016100b5565b6100776103a6565b6100a1610101366004610573565b5f602081905290815260409020546001600160a01b031681565b6100dd6101293660046105aa565b610492565b5f82826040516020016101429291906105e9565b60408051601f19818403018152919052805160209091012090506001600160a01b0384166101d05760405162461bcd60e51b815260206004820152603060248201527f557365726e616d6552656769737472793a206163636f756e742063616e6e6f7460448201526f206265207a65726f206164647265737360801b60648201526084015b60405180910390fd5b5f818152602081905260409020546001600160a01b0316156102435760405162461bcd60e51b815260206004820152602660248201527f557365726e616d6552656769737472793a2068616e646c6520616c7265616479604482015265103a30b5b2b760d11b60648201526084016101c7565b6001600160a01b0384165f90815260016020526040902054156102bf5760405162461bcd60e51b815260206004820152602e60248201527f557365726e616d6552656769737472793a206163636f756e7420616c7265616460448201526d792068617320612068616e646c6560901b60648201526084016101c7565b336001600160a01b0385161461032c5760405162461bcd60e51b815260206004820152602c60248201527f557365726e616d6552656769737472793a2063616c6c6572206d75737420626560448201526b081d1a19481858d8dbdd5b9d60a21b60648201526084016101c7565b5f8181526020818152604080832080546001600160a01b0319166001600160a01b038916908117909155808452600190925291829020839055905182907fb51e24ca9479f1f48c99c45f4d89c5a1853cfab00d1852d28bb3ea9f1feb58c69061039890879087906105f8565b60405180910390a350505050565b60405160ed60248201525f9073dc2b0d2dd2b7759d97d50db4eabdc369731108309060440160408051601f198184030181529181526020820180516001600160e01b03166307983f4560e21b179052516104009190610626565b5f604051808303815f865af19150503d805f8114610439576040519150601f19603f3d011682016040523d82523d5f602084013e61043e565b606091505b505090508061048f5760405162461bcd60e51b815260206004820152601860248201527f4665654d20726567697374726174696f6e206661696c6564000000000000000060448201526064016101c7565b50565b5f82826040516020016104a69291906105e9565b60405160208183030381529060405280519060200120905092915050565b80356001600160a01b03811681146104da575f80fd5b919050565b5f8083601f8401126104ef575f80fd5b50813567ffffffffffffffff811115610506575f80fd5b60208301915083602082850101111561051d575f80fd5b9250929050565b5f805f60408486031215610536575f80fd5b61053f846104c4565b9250602084013567ffffffffffffffff81111561055a575f80fd5b610566868287016104df565b9497909650939450505050565b5f60208284031215610583575f80fd5b5035919050565b5f6020828403121561059a575f80fd5b6105a3826104c4565b9392505050565b5f80602083850312156105bb575f80fd5b823567ffffffffffffffff8111156105d1575f80fd5b6105dd858286016104df565b90969095509350505050565b818382375f9101908152919050565b60208152816020820152818360408301375f818301604090810191909152601f909201601f19160101919050565b5f82515f5b81811015610645576020818601810151858301520161062b565b505f92019182525091905056fea26469706673582212203b621747ab514261355e0f848c962c19872c9b2bf28d642a82115aab41bc992064736f6c63430008140033

Deployed Bytecode Sourcemap

217:2437:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;842:824;;;;;;:::i;:::-;;:::i;:::-;;1895:114;;;;;;:::i;:::-;1955:7;1982:19;;;;;;;;;;;-1:-1:-1;;;;;1982:19:0;;1895:114;;;;-1:-1:-1;;;;;1384:32:1;;;1366:51;;1354:2;1339:18;1895:114:0;;;;;;;;425:50;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;1765:25:1;;;1753:2;1738:18;425:50:0;1619:177:1;2391:260:0;;;:::i;293:42::-;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;293:42:0;;;2190:144;;;;;;:::i;:::-;;:::i;842:824::-;1036:18;1084:15;;1067:33;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1067:33:0;;;;;;;;;1057:44;;1067:33;1057:44;;;;;-1:-1:-1;;;;;;1130:21:0;;1122:82;;;;-1:-1:-1;;;1122:82:0;;2697:2:1;1122:82:0;;;2679:21:1;2736:2;2716:18;;;2709:30;2775:34;2755:18;;;2748:62;-1:-1:-1;;;2826:18:1;;;2819:46;2882:19;;1122:82:0;;;;;;;;;1254:1;1223:19;;;;;;;;;;;-1:-1:-1;;;;;1223:19:0;:33;1215:84;;;;-1:-1:-1;;;1215:84:0;;3114:2:1;1215:84:0;;;3096:21:1;3153:2;3133:18;;;3126:30;3192:34;3172:18;;;3165:62;-1:-1:-1;;;3243:18:1;;;3236:36;3289:19;;1215:84:0;2912:402:1;1215:84:0;-1:-1:-1;;;;;1318:24:0;;1354:1;1318:24;;;:15;:24;;;;;;:38;1310:97;;;;-1:-1:-1;;;1310:97:0;;3521:2:1;1310:97:0;;;3503:21:1;3560:2;3540:18;;;3533:30;3599:34;3579:18;;;3572:62;-1:-1:-1;;;3650:18:1;;;3643:44;3704:19;;1310:97:0;3319:410:1;1310:97:0;1426:10;-1:-1:-1;;;;;1426:21:0;;;1418:78;;;;-1:-1:-1;;;1418:78:0;;3936:2:1;1418:78:0;;;3918:21:1;3975:2;3955:18;;;3948:30;4014:34;3994:18;;;3987:62;-1:-1:-1;;;4065:18:1;;;4058:42;4117:19;;1418:78:0;3734:408:1;1418:78:0;1509:7;:19;;;;;;;;;;;:29;;-1:-1:-1;;;;;;1509:29:0;-1:-1:-1;;;;;1509:29:0;;;;;;;;1549:24;;;-1:-1:-1;1549:24:0;;;;;;;:37;;;1604:54;;1509:19;;1604:54;;;;1642:15;;;;1604:54;:::i;:::-;;;;;;;;944:722;842:824;;;:::o;2391:260::-;2523:53;;2572:3;2523:53;;;4696:36:1;2434:13:0;;2460:42;;4669:18:1;;2523:53:0;;;-1:-1:-1;;2523:53:0;;;;;;;;;;;;;;-1:-1:-1;;;;;2523:53:0;-1:-1:-1;;;2523:53:0;;;2452:135;;;2523:53;2452:135;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2433:154;;;2606:8;2598:45;;;;-1:-1:-1;;;2598:45:0;;5362:2:1;2598:45:0;;;5344:21:1;5401:2;5381:18;;;5374:30;5440:26;5420:18;;;5413:54;5484:18;;2598:45:0;5160:348:1;2598:45:0;2422:229;2391:260::o;2190:144::-;2264:7;2318:6;;2301:24;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2291:35;;;;;;2284:42;;2190:144;;;;:::o;14:173:1:-;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:348::-;244:8;254:6;308:3;301:4;293:6;289:17;285:27;275:55;;326:1;323;316:12;275:55;-1:-1:-1;349:20:1;;392:18;381:30;;378:50;;;424:1;421;414:12;378:50;461:4;453:6;449:17;437:29;;513:3;506:4;497:6;489;485:19;481:30;478:39;475:59;;;530:1;527;520:12;475:59;192:348;;;;;:::o;545:485::-;625:6;633;641;694:2;682:9;673:7;669:23;665:32;662:52;;;710:1;707;700:12;662:52;733:29;752:9;733:29;:::i;:::-;723:39;;813:2;802:9;798:18;785:32;840:18;832:6;829:30;826:50;;;872:1;869;862:12;826:50;911:59;962:7;953:6;942:9;938:22;911:59;:::i;:::-;545:485;;989:8;;-1:-1:-1;885:85:1;;-1:-1:-1;;;;545:485:1:o;1035:180::-;1094:6;1147:2;1135:9;1126:7;1122:23;1118:32;1115:52;;;1163:1;1160;1153:12;1115:52;-1:-1:-1;1186:23:1;;1035:180;-1:-1:-1;1035:180:1:o;1428:186::-;1487:6;1540:2;1528:9;1519:7;1515:23;1511:32;1508:52;;;1556:1;1553;1546:12;1508:52;1579:29;1598:9;1579:29;:::i;:::-;1569:39;1428:186;-1:-1:-1;;;1428:186:1:o;1801:411::-;1872:6;1880;1933:2;1921:9;1912:7;1908:23;1904:32;1901:52;;;1949:1;1946;1939:12;1901:52;1989:9;1976:23;2022:18;2014:6;2011:30;2008:50;;;2054:1;2051;2044:12;2008:50;2093:59;2144:7;2135:6;2124:9;2120:22;2093:59;:::i;:::-;2171:8;;2067:85;;-1:-1:-1;1801:411:1;-1:-1:-1;;;;1801:411:1:o;2217:273::-;2402:6;2394;2389:3;2376:33;2358:3;2428:16;;2453:13;;;2428:16;2217:273;-1:-1:-1;2217:273:1:o;4147:390::-;4306:2;4295:9;4288:21;4345:6;4340:2;4329:9;4325:18;4318:34;4402:6;4394;4389:2;4378:9;4374:18;4361:48;4458:1;4429:22;;;4453:2;4425:31;;;4418:42;;;;4521:2;4500:15;;;-1:-1:-1;;4496:29:1;4481:45;4477:54;;4147:390;-1:-1:-1;4147:390:1:o;4743:412::-;4872:3;4910:6;4904:13;4935:1;4945:129;4959:6;4956:1;4953:13;4945:129;;;5057:4;5041:14;;;5037:25;;5031:32;5018:11;;;5011:53;4974:12;4945:129;;;-1:-1:-1;5129:1:1;5093:16;;5118:13;;;-1:-1:-1;5093:16:1;4743:412;-1:-1:-1;4743:412:1:o

Swarm Source

ipfs://3b621747ab514261355e0f848c962c19872c9b2bf28d642a82115aab41bc9920

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