ETH Price: $3,876.54 (-11.57%)

Contract

0x231055A0852D67C7107Ad0d0DFeab60278fE6AdC
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Anchor Dag Cbor235507712025-10-11 0:01:3547 mins ago1760140895IN
0x231055A0...278fE6AdC
0 ETH0.0008489433.33647401
Anchor Dag Cbor235504732025-10-10 23:01:471 hr ago1760137307IN
0x231055A0...278fE6AdC
0 ETH0.001851972.72067155
Anchor Dag Cbor235501752025-10-10 22:01:352 hrs ago1760133695IN
0x231055A0...278fE6AdC
0 ETH0.00449612176.55389808
Anchor Dag Cbor235498812025-10-10 21:02:233 hrs ago1760130143IN
0x231055A0...278fE6AdC
0 ETH0.00011754.61408862
Anchor Dag Cbor235495772025-10-10 20:01:354 hrs ago1760126495IN
0x231055A0...278fE6AdC
0 ETH0.000156676.15247413
Anchor Dag Cbor235492812025-10-10 19:01:595 hrs ago1760122919IN
0x231055A0...278fE6AdC
0 ETH0.000060852.38958799
Anchor Dag Cbor235489822025-10-10 18:01:356 hrs ago1760119295IN
0x231055A0...278fE6AdC
0 ETH0.000092513.63269773
Anchor Dag Cbor235486862025-10-10 17:01:357 hrs ago1760115695IN
0x231055A0...278fE6AdC
0 ETH0.000107254.21156756
Anchor Dag Cbor235483902025-10-10 16:01:478 hrs ago1760112107IN
0x231055A0...278fE6AdC
0 ETH0.000310712.20096662
Anchor Dag Cbor235480912025-10-10 15:01:359 hrs ago1760108495IN
0x231055A0...278fE6AdC
0 ETH0.000072672.85374339
Anchor Dag Cbor235477982025-10-10 14:01:3510 hrs ago1760104895IN
0x231055A0...278fE6AdC
0 ETH0.000058532.29852188
Anchor Dag Cbor235474982025-10-10 13:01:3511 hrs ago1760101295IN
0x231055A0...278fE6AdC
0 ETH0.00004591.80277811
Anchor Dag Cbor235472012025-10-10 12:01:4712 hrs ago1760097707IN
0x231055A0...278fE6AdC
0 ETH0.000041341.62335712
Anchor Dag Cbor235469022025-10-10 11:01:4713 hrs ago1760094107IN
0x231055A0...278fE6AdC
0 ETH0.000041291.62172824
Anchor Dag Cbor235466022025-10-10 10:01:3514 hrs ago1760090495IN
0x231055A0...278fE6AdC
0 ETH0.000044061.73041748
Anchor Dag Cbor235463032025-10-10 9:01:2315 hrs ago1760086883IN
0x231055A0...278fE6AdC
0 ETH0.000044241.73760044
Anchor Dag Cbor235460082025-10-10 8:01:2316 hrs ago1760083283IN
0x231055A0...278fE6AdC
0 ETH0.000041151.61616738
Anchor Dag Cbor235457122025-10-10 7:01:5917 hrs ago1760079719IN
0x231055A0...278fE6AdC
0 ETH0.000042341.66269949
Anchor Dag Cbor235454122025-10-10 6:01:3518 hrs ago1760076095IN
0x231055A0...278fE6AdC
0 ETH0.00004171.6375335
Anchor Dag Cbor235451112025-10-10 5:01:2319 hrs ago1760072483IN
0x231055A0...278fE6AdC
0 ETH0.000041141.61569086
Anchor Dag Cbor235448122025-10-10 4:01:3520 hrs ago1760068895IN
0x231055A0...278fE6AdC
0 ETH0.000042991.68930972
Anchor Dag Cbor235445152025-10-10 3:01:5921 hrs ago1760065319IN
0x231055A0...278fE6AdC
0 ETH0.000041271.62083335
Anchor Dag Cbor235442162025-10-10 2:01:5922 hrs ago1760061719IN
0x231055A0...278fE6AdC
0 ETH0.000040841.60403332
Anchor Dag Cbor235439182025-10-10 1:01:4723 hrs ago1760058107IN
0x231055A0...278fE6AdC
0 ETH0.000041391.6254209
Anchor Dag Cbor235436222025-10-10 0:01:2324 hrs ago1760054483IN
0x231055A0...278fE6AdC
0 ETH0.000041041.61165776
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
CeramicAnchorServiceV2

Compiler Version
v0.8.13+commit.abaa5c0e

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity Multiple files format)

File 1 of 3: CeramicAnchorServiceV2.sol
// 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);
    }
    
}

File 2 of 3: Context.sol
// 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;
    }
}

File 3 of 3: Ownable.sol
// 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

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"}]

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

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
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.