Source Code
Overview
S Balance
S Value
$0.00Latest 1 from a total of 1 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Register Me | 55801901 | 72 days ago | IN | 0 S | 0.00419495 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Cross-Chain Transactions
Loading...
Loading
Contract Name:
UsernameRegistry
Compiler Version
v0.8.20+commit.a1b79de6
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
- No Contract Security Audit Submitted- Submit Audit Here
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"}]Contract Creation Code
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
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in S
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
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.