Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 25 from a total of 33,124 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Anchor Dag Cbor | 23550771 | 47 mins ago | IN | 0 ETH | 0.00084894 | ||||
Anchor Dag Cbor | 23550473 | 1 hr ago | IN | 0 ETH | 0.0018519 | ||||
Anchor Dag Cbor | 23550175 | 2 hrs ago | IN | 0 ETH | 0.00449612 | ||||
Anchor Dag Cbor | 23549881 | 3 hrs ago | IN | 0 ETH | 0.0001175 | ||||
Anchor Dag Cbor | 23549577 | 4 hrs ago | IN | 0 ETH | 0.00015667 | ||||
Anchor Dag Cbor | 23549281 | 5 hrs ago | IN | 0 ETH | 0.00006085 | ||||
Anchor Dag Cbor | 23548982 | 6 hrs ago | IN | 0 ETH | 0.00009251 | ||||
Anchor Dag Cbor | 23548686 | 7 hrs ago | IN | 0 ETH | 0.00010725 | ||||
Anchor Dag Cbor | 23548390 | 8 hrs ago | IN | 0 ETH | 0.0003107 | ||||
Anchor Dag Cbor | 23548091 | 9 hrs ago | IN | 0 ETH | 0.00007267 | ||||
Anchor Dag Cbor | 23547798 | 10 hrs ago | IN | 0 ETH | 0.00005853 | ||||
Anchor Dag Cbor | 23547498 | 11 hrs ago | IN | 0 ETH | 0.0000459 | ||||
Anchor Dag Cbor | 23547201 | 12 hrs ago | IN | 0 ETH | 0.00004134 | ||||
Anchor Dag Cbor | 23546902 | 13 hrs ago | IN | 0 ETH | 0.00004129 | ||||
Anchor Dag Cbor | 23546602 | 14 hrs ago | IN | 0 ETH | 0.00004406 | ||||
Anchor Dag Cbor | 23546303 | 15 hrs ago | IN | 0 ETH | 0.00004424 | ||||
Anchor Dag Cbor | 23546008 | 16 hrs ago | IN | 0 ETH | 0.00004115 | ||||
Anchor Dag Cbor | 23545712 | 17 hrs ago | IN | 0 ETH | 0.00004234 | ||||
Anchor Dag Cbor | 23545412 | 18 hrs ago | IN | 0 ETH | 0.0000417 | ||||
Anchor Dag Cbor | 23545111 | 19 hrs ago | IN | 0 ETH | 0.00004114 | ||||
Anchor Dag Cbor | 23544812 | 20 hrs ago | IN | 0 ETH | 0.00004299 | ||||
Anchor Dag Cbor | 23544515 | 21 hrs ago | IN | 0 ETH | 0.00004127 | ||||
Anchor Dag Cbor | 23544216 | 22 hrs ago | IN | 0 ETH | 0.00004084 | ||||
Anchor Dag Cbor | 23543918 | 23 hrs ago | IN | 0 ETH | 0.00004139 | ||||
Anchor Dag Cbor | 23543622 | 24 hrs ago | IN | 0 ETH | 0.00004104 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Cross-Chain Transactions
Loading...
Loading
Contract Name:
CeramicAnchorServiceV2
Compiler Version
v0.8.13+commit.abaa5c0e
Contract Source Code (Solidity Multiple files format)
// SPDX-License-Identifier: GPL pragma solidity ^0.8.13; import "./Ownable.sol"; contract CeramicAnchorServiceV2 is Ownable { //the list of addresses mapping (address => bool) allowList; //when a service is added to allow list event DidAddCas(address indexed _service); //when a service was removed from allow list event DidRemoveCas(address indexed _service); //upon successful anchor event DidAnchor(address indexed _service, bytes32 _root); // Only addresses in the allow list is allowed to anchor modifier onlyAllowed() { require( ( allowList[ msg.sender ] || msg.sender == owner() ), "Allow List: caller is not allowed"); _; } constructor(){} /* @name addCas @param address _service - the service to be added @desc add an address to the allow list @note Only owner can add to the allowlist */ function addCas(address _service) public onlyOwner { allowList[_service] = true; emit DidAddCas(_service); } /* @name removeCas @param address _service - service to be removed @desc Removal can be performed by the owner or the service itself */ function removeCas(address _service) public { // require((owner() == _msgSender()) || (allowList[_msgSender()].allowed && _msgSender() == _service), "Caller is not allowed or the owner"); require((owner() == _msgSender()) || (allowList[_msgSender()] && _msgSender() == _service), "Caller is not allowed or the owner"); delete allowList[_service]; emit DidRemoveCas(_service); } /* @name isServiceAllowed @param address _service - address to check @desc check if a service/address is allowed */ function isServiceAllowed(address _service) public view returns(bool) { return allowList[_service]; } /* @name anchor @param calldata _root @desc Here _root is a byte representation of Merkle root CID. */ function anchorDagCbor(bytes32 _root) public onlyAllowed { emit DidAnchor(msg.sender, _root); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol) pragma solidity ^0.8.0; import "./Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_service","type":"address"}],"name":"DidAddCas","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_service","type":"address"},{"indexed":false,"internalType":"bytes32","name":"_root","type":"bytes32"}],"name":"DidAnchor","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_service","type":"address"}],"name":"DidRemoveCas","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":"_service","type":"address"}],"name":"addCas","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"_root","type":"bytes32"}],"name":"anchorDagCbor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_service","type":"address"}],"name":"isServiceAllowed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_service","type":"address"}],"name":"removeCas","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6104d78061007e6000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80638da5cb5b1161005b5780638da5cb5b146100b257806397ad09eb146100d2578063f28453e6146100e5578063f2fde38b1461012157600080fd5b806339cd70d214610082578063715018a6146100975780637c22986e1461009f575b600080fd5b610095610090366004610458565b610134565b005b61009561018b565b6100956100ad366004610458565b61019f565b6000546040516001600160a01b0390911681526020015b60405180910390f35b6100956100e0366004610488565b61027f565b6101116100f3366004610458565b6001600160a01b031660009081526001602052604090205460ff1690565b60405190151581526020016100c9565b61009561012f366004610458565b610335565b61013c6103ae565b6001600160a01b0381166000818152600160208190526040808320805460ff1916909217909155517f9d1718ad4362863c494187b5bc7779357412ed66223197e206cbd518b50924969190a250565b6101936103ae565b61019d6000610408565b565b6000546001600160a01b03163314806101da57503360009081526001602052604090205460ff1680156101da5750336001600160a01b038216145b6102365760405162461bcd60e51b815260206004820152602260248201527f43616c6c6572206973206e6f7420616c6c6f776564206f7220746865206f776e60448201526132b960f11b60648201526084015b60405180910390fd5b6001600160a01b038116600081815260016020526040808220805460ff19169055517f92a2ba05b24e29c93740ad08a206699c531780ff746cfb8882d1d46dad70714b9190a250565b3360009081526001602052604090205460ff16806102a757506000546001600160a01b031633145b6102fd5760405162461bcd60e51b815260206004820152602160248201527f416c6c6f77204c6973743a2063616c6c6572206973206e6f7420616c6c6f77656044820152601960fa1b606482015260840161022d565b60405181815233907f37f9254ff1973d24d609016d6bb0aef8e6de91808811a546fad8eaa0e481d9d99060200160405180910390a250565b61033d6103ae565b6001600160a01b0381166103a25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161022d565b6103ab81610408565b50565b6000546001600160a01b0316331461019d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161022d565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561046a57600080fd5b81356001600160a01b038116811461048157600080fd5b9392505050565b60006020828403121561049a57600080fd5b503591905056fea264697066735822122016f9b4ff0f679e130d2d808907c631457fdeb6805122f262d0c0e52a1abb3ad064736f6c634300080d0033
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061007d5760003560e01c80638da5cb5b1161005b5780638da5cb5b146100b257806397ad09eb146100d2578063f28453e6146100e5578063f2fde38b1461012157600080fd5b806339cd70d214610082578063715018a6146100975780637c22986e1461009f575b600080fd5b610095610090366004610458565b610134565b005b61009561018b565b6100956100ad366004610458565b61019f565b6000546040516001600160a01b0390911681526020015b60405180910390f35b6100956100e0366004610488565b61027f565b6101116100f3366004610458565b6001600160a01b031660009081526001602052604090205460ff1690565b60405190151581526020016100c9565b61009561012f366004610458565b610335565b61013c6103ae565b6001600160a01b0381166000818152600160208190526040808320805460ff1916909217909155517f9d1718ad4362863c494187b5bc7779357412ed66223197e206cbd518b50924969190a250565b6101936103ae565b61019d6000610408565b565b6000546001600160a01b03163314806101da57503360009081526001602052604090205460ff1680156101da5750336001600160a01b038216145b6102365760405162461bcd60e51b815260206004820152602260248201527f43616c6c6572206973206e6f7420616c6c6f776564206f7220746865206f776e60448201526132b960f11b60648201526084015b60405180910390fd5b6001600160a01b038116600081815260016020526040808220805460ff19169055517f92a2ba05b24e29c93740ad08a206699c531780ff746cfb8882d1d46dad70714b9190a250565b3360009081526001602052604090205460ff16806102a757506000546001600160a01b031633145b6102fd5760405162461bcd60e51b815260206004820152602160248201527f416c6c6f77204c6973743a2063616c6c6572206973206e6f7420616c6c6f77656044820152601960fa1b606482015260840161022d565b60405181815233907f37f9254ff1973d24d609016d6bb0aef8e6de91808811a546fad8eaa0e481d9d99060200160405180910390a250565b61033d6103ae565b6001600160a01b0381166103a25760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161022d565b6103ab81610408565b50565b6000546001600160a01b0316331461019d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161022d565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561046a57600080fd5b81356001600160a01b038116811461048157600080fd5b9392505050565b60006020828403121561049a57600080fd5b503591905056fea264697066735822122016f9b4ff0f679e130d2d808907c631457fdeb6805122f262d0c0e52a1abb3ad064736f6c634300080d0033
Deployed Bytecode Sourcemap
84:2104:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;942:128;;;;;;:::i;:::-;;:::i;:::-;;1824:101:2;;;:::i;1252:413:0:-;;;;;;:::i;:::-;;:::i;1194:85:2:-;1240:7;1266:6;1194:85;;-1:-1:-1;;;;;1266:6:2;;;451:51:3;;439:2;424:18;1194:85:2;;;;;;;;2074:107:0;;;;;;:::i;:::-;;:::i;1819:113::-;;;;;;:::i;:::-;-1:-1:-1;;;;;1906:19:0;1883:4;1906:19;;;:9;:19;;;;;;;;;1819:113;;;;863:14:3;;856:22;838:41;;826:2;811:18;1819:113:0;698:187:3;2074:198:2;;;;;;:::i;:::-;;:::i;942:128:0:-;1087:13:2;:11;:13::i;:::-;-1:-1:-1;;;;;1003:19:0;::::1;;::::0;;;1025:4:::1;1003:19;::::0;;;;;;;:26;;-1:-1:-1;;1003:26:0::1;::::0;;::::1;::::0;;;1044:19;::::1;::::0;1003;1044::::1;942:128:::0;:::o;1824:101:2:-;1087:13;:11;:13::i;:::-;1888:30:::1;1915:1;1888:18;:30::i;:::-;1824:101::o:0;1252:413:0:-;1240:7:2;1266:6;-1:-1:-1;;;;;1266:6:2;719:10:1;1465:23:0;;1464:82;;-1:-1:-1;719:10:1;1494:23:0;;;;:9;:23;;;;;;;;:51;;;;-1:-1:-1;719:10:1;-1:-1:-1;;;;;1521:24:0;;;1494:51;1456:129;;;;-1:-1:-1;;;1456:129:0;;1092:2:3;1456:129:0;;;1074:21:3;1131:2;1111:18;;;1104:30;1170:34;1150:18;;;1143:62;-1:-1:-1;;;1221:18:3;;;1214:32;1263:19;;1456:129:0;;;;;;;;;-1:-1:-1;;;;;1602:19:0;;;;;;:9;:19;;;;;;1595:26;;-1:-1:-1;;1595:26:0;;;1636:22;;;1602:19;1636:22;1252:413;:::o;2074:107::-;617:10;606:23;;;;:9;:23;;;;;;;;;:48;;-1:-1:-1;1240:7:2;1266:6;-1:-1:-1;;;;;1266:6:2;633:10:0;:21;606:48;583:124;;;;-1:-1:-1;;;583:124:0;;1495:2:3;583:124:0;;;1477:21:3;1534:2;1514:18;;;1507:30;1573:34;1553:18;;;1546:62;-1:-1:-1;;;1624:18:3;;;1617:31;1665:19;;583:124:0;1293:397:3;583:124:0;2146:28:::1;::::0;1841:25:3;;;2156:10:0::1;::::0;2146:28:::1;::::0;1829:2:3;1814:18;2146:28:0::1;;;;;;;2074:107:::0;:::o;:198:2:-;1087:13;:11;:13::i;:::-;-1:-1:-1;;;;;2162:22:2;::::1;2154:73;;;::::0;-1:-1:-1;;;2154:73:2;;2079:2:3;2154:73:2::1;::::0;::::1;2061:21:3::0;2118:2;2098:18;;;2091:30;2157:34;2137:18;;;2130:62;-1:-1:-1;;;2208:18:3;;;2201:36;2254:19;;2154:73:2::1;1877:402:3::0;2154:73:2::1;2237:28;2256:8;2237:18;:28::i;:::-;2074:198:::0;:::o;1352:130::-;1240:7;1266:6;-1:-1:-1;;;;;1266:6:2;719:10:1;1415:23:2;1407:68;;;;-1:-1:-1;;;1407:68:2;;2486:2:3;1407:68:2;;;2468:21:3;;;2505:18;;;2498:30;2564:34;2544:18;;;2537:62;2616:18;;1407:68:2;2284:356:3;2426:187:2;2499:16;2518:6;;-1:-1:-1;;;;;2534:17:2;;;-1:-1:-1;;;;;;2534:17:2;;;;;;2566:40;;2518:6;;;;;;;2566:40;;2499:16;2566:40;2489:124;2426:187;:::o;14:286:3:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;168:23;;-1:-1:-1;;;;;220:31:3;;210:42;;200:70;;266:1;263;256:12;200:70;289:5;14:286;-1:-1:-1;;;14:286:3:o;513:180::-;572:6;625:2;613:9;604:7;600:23;596:32;593:52;;;641:1;638;631:12;593:52;-1:-1:-1;664:23:3;;513:180;-1:-1:-1;513:180:3:o
Swarm Source
ipfs://16f9b4ff0f679e130d2d808907c631457fdeb6805122f262d0c0e52a1abb3ad0
Loading...
Loading
Loading...
Loading

Multichain Portfolio | 34 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.