Source Code
Overview
ETH Balance
0 ETH
Token Holdings
More Info
ContractCreator
Multichain Info
N/A
Latest 25 from a total of 2,519 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Register | 6702141 | 3 mins ago | IN | 0 ETH | 0.00119145 | ||||
Register | 6702134 | 5 mins ago | IN | 0 ETH | 0.00123458 | ||||
Register | 6702116 | 10 mins ago | IN | 0 ETH | 0.00143573 | ||||
Register | 6702101 | 13 mins ago | IN | 0 ETH | 0.00140698 | ||||
Register | 6686617 | 2 days ago | IN | 0 ETH | 0.00000022 | ||||
Register | 6686612 | 2 days ago | IN | 0 ETH | 0.00000026 | ||||
Register | 6686607 | 2 days ago | IN | 0 ETH | 0.00000027 | ||||
Register | 6686592 | 2 days ago | IN | 0 ETH | 0.00000028 | ||||
Register | 6684490 | 2 days ago | IN | 0 ETH | 0.00151088 | ||||
Register | 6682641 | 3 days ago | IN | 0 ETH | 0.00010156 | ||||
Register | 6677991 | 3 days ago | IN | 0 ETH | 0.02704028 | ||||
Register | 6677988 | 3 days ago | IN | 0 ETH | 0.02843442 | ||||
Register | 6673719 | 4 days ago | IN | 0 ETH | 0.00020862 | ||||
Register | 6663384 | 6 days ago | IN | 0 ETH | 0.00029577 | ||||
Register | 6661299 | 6 days ago | IN | 0 ETH | 0.01322845 | ||||
Register | 6647383 | 9 days ago | IN | 0 ETH | 0.00027409 | ||||
Register | 6644885 | 9 days ago | IN | 0 ETH | 0.00020874 | ||||
Register | 6641781 | 10 days ago | IN | 0 ETH | 0.00038701 | ||||
Register | 6641693 | 10 days ago | IN | 0 ETH | 0.00065185 | ||||
Register | 6637857 | 10 days ago | IN | 0 ETH | 0.00574889 | ||||
Register | 6637831 | 10 days ago | IN | 0 ETH | 0.00501723 | ||||
Register | 6637294 | 10 days ago | IN | 0 ETH | 0.01488186 | ||||
Register | 6637205 | 10 days ago | IN | 0 ETH | 0.00586242 | ||||
Register | 6633572 | 11 days ago | IN | 0 ETH | 0.00299723 | ||||
Register | 6631958 | 11 days ago | IN | 0 ETH | 0.01712518 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Name:
SchemaRegistry
Compiler Version
v0.8.18+commit.87f61d96
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity 0.8.18; import { EMPTY_UID } from "./Types.sol"; import { ISchemaRegistry, SchemaRecord } from "./ISchemaRegistry.sol"; import { ISchemaResolver } from "./resolver/ISchemaResolver.sol"; /** * @title The global schema registry. */ contract SchemaRegistry is ISchemaRegistry { error AlreadyExists(); // The version of the contract. string public constant VERSION = "0.26"; // The global mapping between schema records and their IDs. mapping(bytes32 uid => SchemaRecord schemaRecord) private _registry; /** * @inheritdoc ISchemaRegistry */ function register(string calldata schema, ISchemaResolver resolver, bool revocable) external returns (bytes32) { SchemaRecord memory schemaRecord = SchemaRecord({ uid: EMPTY_UID, schema: schema, resolver: resolver, revocable: revocable }); bytes32 uid = _getUID(schemaRecord); if (_registry[uid].uid != EMPTY_UID) { revert AlreadyExists(); } schemaRecord.uid = uid; _registry[uid] = schemaRecord; emit Registered(uid, msg.sender); return uid; } /** * @inheritdoc ISchemaRegistry */ function getSchema(bytes32 uid) external view returns (SchemaRecord memory) { return _registry[uid]; } /** * @dev Calculates a UID for a given schema. * * @param schemaRecord The input schema. * * @return schema UID. */ function _getUID(SchemaRecord memory schemaRecord) private pure returns (bytes32) { return keccak256(abi.encodePacked(schemaRecord.schema, schemaRecord.resolver, schemaRecord.revocable)); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import { ISchemaResolver } from "./resolver/ISchemaResolver.sol"; /** * @title A struct representing a record for a submitted schema. */ struct SchemaRecord { bytes32 uid; // The unique identifier of the schema. ISchemaResolver resolver; // Optional schema resolver. bool revocable; // Whether the schema allows revocations explicitly. string schema; // Custom specification of the schema (e.g., an ABI). } /** * @title The global schema registry interface. */ interface ISchemaRegistry { /** * @dev Emitted when a new schema has been registered * * @param uid The schema UID. * @param registerer The address of the account used to register the schema. */ event Registered(bytes32 indexed uid, address registerer); /** * @dev Submits and reserves a new schema * * @param schema The schema data schema. * @param resolver An optional schema resolver. * @param revocable Whether the schema allows revocations explicitly. * * @return The UID of the new schema. */ function register(string calldata schema, ISchemaResolver resolver, bool revocable) external returns (bytes32); /** * @dev Returns an existing schema by UID * * @param uid The UID of the schema to retrieve. * * @return The schema data members. */ function getSchema(bytes32 uid) external view returns (SchemaRecord memory); }
// SPDX-License-Identifier: MIT pragma solidity 0.8.18; // A representation of an empty/uninitialized UID. bytes32 constant EMPTY_UID = 0; /** * @dev A struct representing EIP712 signature data. */ struct EIP712Signature { uint8 v; // The recovery ID. bytes32 r; // The x-coordinate of the nonce R. bytes32 s; // The signature data. } /** * @dev A struct representing a single attestation. */ struct Attestation { bytes32 uid; // A unique identifier of the attestation. bytes32 schema; // The unique identifier of the schema. uint64 time; // The time when the attestation was created (Unix timestamp). uint64 expirationTime; // The time when the attestation expires (Unix timestamp). uint64 revocationTime; // The time when the attestation was revoked (Unix timestamp). bytes32 refUID; // The UID of the related attestation. address recipient; // The recipient of the attestation. address attester; // The attester/sender of the attestation. bool revocable; // Whether the attestation is revocable. bytes data; // Custom attestation data. }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import { Attestation } from "../Types.sol"; /** * @title The interface of an optional schema resolver. */ interface ISchemaResolver { /** * @dev Returns whether the resolver supports ETH transfers. */ function isPayable() external pure returns (bool); /** * @dev Processes an attestation and verifies whether it's valid. * * @param attestation The new attestation. * * @return Whether the attestation is valid. */ function attest(Attestation calldata attestation) external payable returns (bool); /** * @dev Processes multiple attestations and verifies whether they are valid. * * @param attestations The new attestations. * @param values Explicit ETH amounts which were sent with each attestation. * * @return Whether all the attestations are valid. */ function multiAttest( Attestation[] calldata attestations, uint256[] calldata values ) external payable returns (bool); /** * @dev Processes an attestation revocation and verifies if it can be revoked. * * @param attestation The existing attestation to be revoked. * * @return Whether the attestation can be revoked. */ function revoke(Attestation calldata attestation) external payable returns (bool); /** * @dev Processes revocation of multiple attestation and verifies they can be revoked. * * @param attestations The existing attestations to be revoked. * @param values Explicit ETH amounts which were sent with each revocation. * * @return Whether the attestations can be revoked. */ function multiRevoke( Attestation[] calldata attestations, uint256[] calldata values ) external payable returns (bool); }
{ "evmVersion": "paris", "libraries": {}, "metadata": { "bytecodeHash": "none", "useLiteralContent": true }, "optimizer": { "enabled": true, "runs": 1000000 }, "remappings": [], "viaIR": true, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "devdoc", "userdoc", "metadata", "abi" ] } } }
[{"inputs":[],"name":"AlreadyExists","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"uid","type":"bytes32"},{"indexed":false,"internalType":"address","name":"registerer","type":"address"}],"name":"Registered","type":"event"},{"inputs":[],"name":"VERSION","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"uid","type":"bytes32"}],"name":"getSchema","outputs":[{"components":[{"internalType":"bytes32","name":"uid","type":"bytes32"},{"internalType":"contract ISchemaResolver","name":"resolver","type":"address"},{"internalType":"bool","name":"revocable","type":"bool"},{"internalType":"string","name":"schema","type":"string"}],"internalType":"struct SchemaRecord","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"schema","type":"string"},{"internalType":"contract ISchemaResolver","name":"resolver","type":"address"},{"internalType":"bool","name":"revocable","type":"bool"}],"name":"register","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60808060405234610016576107b8908161001c8239f35b600080fdfe60806040908082526004918236101561001757600080fd5b600091823560e01c90816360d7a2781461029757508063a2ea7c6e146101045763ffa1ad741461004657600080fd5b3461010057817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610100578051918183019083821067ffffffffffffffff8311176100d45750926100d093825282527f302e323600000000000000000000000000000000000000000000000000000000602083015251918291602083526020830190610689565b0390f35b806041867f4e487b71000000000000000000000000000000000000000000000000000000006024945252fd5b5080fd5b503461010057602092837ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610293576060808351610144816106cc565b85815285878201528585820152015235825281835280822090805191610169836106cc565b805483526001918282015491868501600273ffffffffffffffffffffffffffffffffffffffff92838616835260ff8589019660a01c16151586520188845196898354936101b585610758565b808b52948381169081156102505750600114610214575b50505050506101e1856100d097980386610717565b606087019485528251978897818952519088015251169085015251151560608401525160808084015260a0830190610689565b908094939b50528983205b82841061023d575050508501909601956101e1886100d087386101cc565b80548985018c0152928a0192810161021f565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016858c01525050505090151560051b86010196506101e1886100d087386101cc565b8280fd5b92939050346106625760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126106625780359067ffffffffffffffff80831161065e573660238401121561065e57828201359181831161065a57366024848601011161065a576024359673ffffffffffffffffffffffffffffffffffffffff9182891680990361010057604435978815158099036102935761033b816106cc565b8281526020998a8201908152888201998a52885197848c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe099818b601f83011601610386908d610717565b808c5280828d019460240185378b0101528b6060840199808b5283518d5115158d519384938185019687915180926103bd92610666565b84019260601b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169083015260f81b6034820152036015810182526035016104059082610717565b519020998a8552848c5289852054610632579082918b600294528b8652858d528a8620925183556001968784019251167fffffffffffffffffffffff00000000000000000000000000000000000000000074ff000000000000000000000000000000000000000084549351151560a01b1692161717905501955190815194851161060657506104948654610758565b601f81116105c0575b508891601f8511600114610545578495509084939492919361051a575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91921b9260031b1c19161790555b817f7d917fcbc9a29a9705ff9936ffa599500e4fd902e4486bae317414fe967b307c848351338152a251908152f35b015191507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff386104ba565b9294849081168785528a8520945b8b888383106105a95750505010610572575b505050811b0190556104eb565b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c19169055388080610565565b868601518855909601959485019487935001610553565b868352898320601f860160051c8101918b87106105fc575b601f0160051c019084905b8281106105f157505061049d565b8481550184906105e3565b90915081906105d8565b8260416024927f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b838a517f23369fa6000000000000000000000000000000000000000000000000000000008152fd5b8680fd5b8580fd5b8380fd5b60005b8381106106795750506000910152565b8181015183820152602001610669565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f6020936106c581518092818752878088019101610666565b0116010190565b6080810190811067ffffffffffffffff8211176106e857604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176106e857604052565b90600182811c921680156107a1575b602083101461077257565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b91607f169161076756fea164736f6c6343000812000a
Deployed Bytecode
0x60806040908082526004918236101561001757600080fd5b600091823560e01c90816360d7a2781461029757508063a2ea7c6e146101045763ffa1ad741461004657600080fd5b3461010057817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610100578051918183019083821067ffffffffffffffff8311176100d45750926100d093825282527f302e323600000000000000000000000000000000000000000000000000000000602083015251918291602083526020830190610689565b0390f35b806041867f4e487b71000000000000000000000000000000000000000000000000000000006024945252fd5b5080fd5b503461010057602092837ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610293576060808351610144816106cc565b85815285878201528585820152015235825281835280822090805191610169836106cc565b805483526001918282015491868501600273ffffffffffffffffffffffffffffffffffffffff92838616835260ff8589019660a01c16151586520188845196898354936101b585610758565b808b52948381169081156102505750600114610214575b50505050506101e1856100d097980386610717565b606087019485528251978897818952519088015251169085015251151560608401525160808084015260a0830190610689565b908094939b50528983205b82841061023d575050508501909601956101e1886100d087386101cc565b80548985018c0152928a0192810161021f565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016858c01525050505090151560051b86010196506101e1886100d087386101cc565b8280fd5b92939050346106625760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126106625780359067ffffffffffffffff80831161065e573660238401121561065e57828201359181831161065a57366024848601011161065a576024359673ffffffffffffffffffffffffffffffffffffffff9182891680990361010057604435978815158099036102935761033b816106cc565b8281526020998a8201908152888201998a52885197848c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe099818b601f83011601610386908d610717565b808c5280828d019460240185378b0101528b6060840199808b5283518d5115158d519384938185019687915180926103bd92610666565b84019260601b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000169083015260f81b6034820152036015810182526035016104059082610717565b519020998a8552848c5289852054610632579082918b600294528b8652858d528a8620925183556001968784019251167fffffffffffffffffffffff00000000000000000000000000000000000000000074ff000000000000000000000000000000000000000084549351151560a01b1692161717905501955190815194851161060657506104948654610758565b601f81116105c0575b508891601f8511600114610545578495509084939492919361051a575b50507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff91921b9260031b1c19161790555b817f7d917fcbc9a29a9705ff9936ffa599500e4fd902e4486bae317414fe967b307c848351338152a251908152f35b015191507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff386104ba565b9294849081168785528a8520945b8b888383106105a95750505010610572575b505050811b0190556104eb565b01517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88460031b161c19169055388080610565565b868601518855909601959485019487935001610553565b868352898320601f860160051c8101918b87106105fc575b601f0160051c019084905b8281106105f157505061049d565b8481550184906105e3565b90915081906105d8565b8260416024927f4e487b7100000000000000000000000000000000000000000000000000000000835252fd5b838a517f23369fa6000000000000000000000000000000000000000000000000000000008152fd5b8680fd5b8580fd5b8380fd5b60005b8381106106795750506000910152565b8181015183820152602001610669565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f6020936106c581518092818752878088019101610666565b0116010190565b6080810190811067ffffffffffffffff8211176106e857604052565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176106e857604052565b90600182811c921680156107a1575b602083101461077257565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b91607f169161076756fea164736f6c6343000812000a
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.