Sepolia Testnet

Contract

0x8860ffD389afF6930481b953AaC095c9F85cCAae

Overview

ETH Balance

0 ETH

Multichain Info

N/A
Transaction Hash
Method
Block
From
To
Send Feedback66676562024-09-10 17:00:2413 hrs ago1725987624IN
0x8860ffD3...9F85cCAae
0 ETH0.001358934.22000686
Join Group66676552024-09-10 16:59:4813 hrs ago1725987588IN
0x8860ffD3...9F85cCAae
0 ETH0.000914084.23107625
Send Feedback66602022024-09-09 9:00:1245 hrs ago1725872412IN
0x8860ffD3...9F85cCAae
0 ETH0.03820186118.6271681
Join Group66601982024-09-09 8:59:2445 hrs ago1725872364IN
0x8860ffD3...9F85cCAae
0 ETH0.03112078113.87333137
Join Group66579712024-09-08 23:58:122 days ago1725839892IN
0x8860ffD3...9F85cCAae
0 ETH0.001801367.3625224
Join Group66496992024-09-07 14:30:363 days ago1725719436IN
0x8860ffD3...9F85cCAae
0 ETH0.001347195.50624675
Send Feedback66496962024-09-07 14:29:483 days ago1725719388IN
0x8860ffD3...9F85cCAae
0 ETH0.001727365.36393085
Join Group66496932024-09-07 14:29:003 days ago1725719340IN
0x8860ffD3...9F85cCAae
0 ETH0.001256625.81660814
Send Feedback66469902024-09-07 3:41:484 days ago1725680508IN
0x8860ffD3...9F85cCAae
0 ETH0.001386734.30505696
Send Feedback66469802024-09-07 3:39:124 days ago1725680352IN
0x8860ffD3...9F85cCAae
0 ETH0.001211773.7096914
Join Group66469762024-09-07 3:38:244 days ago1725680304IN
0x8860ffD3...9F85cCAae
0 ETH0.000815893.33470203
Join Group66469742024-09-07 3:38:004 days ago1725680280IN
0x8860ffD3...9F85cCAae
0 ETH0.000697683.22948758
Join Group66469742024-09-07 3:38:004 days ago1725680280IN
0x8860ffD3...9F85cCAae
0 ETH0.00069773.22948758
Send Feedback66388032024-09-05 18:42:005 days ago1725561720IN
0x8860ffD3...9F85cCAae
0 ETH0.002833048.79771426
Join Group66388012024-09-05 18:41:125 days ago1725561672IN
0x8860ffD3...9F85cCAae
0 ETH0.001559927.22048285
Send Feedback66367742024-09-05 10:29:125 days ago1725532152IN
0x8860ffD3...9F85cCAae
0 ETH0.0212177465.89422948
Join Group66367722024-09-05 10:28:485 days ago1725532128IN
0x8860ffD3...9F85cCAae
0 ETH0.0112616760.08950925
Send Feedback66360892024-09-05 7:44:365 days ago1725522276IN
0x8860ffD3...9F85cCAae
0 ETH0.0218468667.83287355
Join Group66360842024-09-05 7:43:245 days ago1725522204IN
0x8860ffD3...9F85cCAae
0 ETH0.0223333373.9710431
Join Group66307552024-09-04 10:22:486 days ago1725445368IN
0x8860ffD3...9F85cCAae
0 ETH0.0191790470.17760122
Send Feedback66295372024-09-04 5:28:007 days ago1725427680IN
0x8860ffD3...9F85cCAae
0 ETH0.0034227510.62303872
Join Group66295332024-09-04 5:26:487 days ago1725427608IN
0x8860ffD3...9F85cCAae
0 ETH0.0030231211.06183895
Send Feedback66231892024-09-03 4:51:128 days ago1725339072IN
0x8860ffD3...9F85cCAae
0 ETH0.01026231.86750953
Join Group66231852024-09-03 4:50:128 days ago1725339012IN
0x8860ffD3...9F85cCAae
0 ETH0.0065148326.62735128
Send Feedback65987332024-08-30 7:11:2411 days ago1725001884IN
0x8860ffD3...9F85cCAae
0 ETH0.004806214.91956469
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
66676562024-09-10 17:00:2413 hrs ago1725987624
0x8860ffD3...9F85cCAae
0 ETH
66676552024-09-10 16:59:4813 hrs ago1725987588
0x8860ffD3...9F85cCAae
0 ETH
66602022024-09-09 9:00:1245 hrs ago1725872412
0x8860ffD3...9F85cCAae
0 ETH
66601982024-09-09 8:59:2445 hrs ago1725872364
0x8860ffD3...9F85cCAae
0 ETH
66579712024-09-08 23:58:122 days ago1725839892
0x8860ffD3...9F85cCAae
0 ETH
66496992024-09-07 14:30:363 days ago1725719436
0x8860ffD3...9F85cCAae
0 ETH
66496962024-09-07 14:29:483 days ago1725719388
0x8860ffD3...9F85cCAae
0 ETH
66496932024-09-07 14:29:003 days ago1725719340
0x8860ffD3...9F85cCAae
0 ETH
66469902024-09-07 3:41:484 days ago1725680508
0x8860ffD3...9F85cCAae
0 ETH
66469802024-09-07 3:39:124 days ago1725680352
0x8860ffD3...9F85cCAae
0 ETH
66469762024-09-07 3:38:244 days ago1725680304
0x8860ffD3...9F85cCAae
0 ETH
66469742024-09-07 3:38:004 days ago1725680280
0x8860ffD3...9F85cCAae
0 ETH
66469742024-09-07 3:38:004 days ago1725680280
0x8860ffD3...9F85cCAae
0 ETH
66388032024-09-05 18:42:005 days ago1725561720
0x8860ffD3...9F85cCAae
0 ETH
66388012024-09-05 18:41:125 days ago1725561672
0x8860ffD3...9F85cCAae
0 ETH
66367742024-09-05 10:29:125 days ago1725532152
0x8860ffD3...9F85cCAae
0 ETH
66367722024-09-05 10:28:485 days ago1725532128
0x8860ffD3...9F85cCAae
0 ETH
66360892024-09-05 7:44:365 days ago1725522276
0x8860ffD3...9F85cCAae
0 ETH
66360842024-09-05 7:43:245 days ago1725522204
0x8860ffD3...9F85cCAae
0 ETH
66307552024-09-04 10:22:486 days ago1725445368
0x8860ffD3...9F85cCAae
0 ETH
66295372024-09-04 5:28:007 days ago1725427680
0x8860ffD3...9F85cCAae
0 ETH
66295332024-09-04 5:26:487 days ago1725427608
0x8860ffD3...9F85cCAae
0 ETH
66231892024-09-03 4:51:128 days ago1725339072
0x8860ffD3...9F85cCAae
0 ETH
66231852024-09-03 4:50:128 days ago1725339012
0x8860ffD3...9F85cCAae
0 ETH
65987332024-08-30 7:11:2411 days ago1725001884
0x8860ffD3...9F85cCAae
0 ETH
View All Internal Transactions
Loading...
Loading

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0xC313AFEB...B9aA5701A
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
Feedback

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
No with 200 runs

Other Settings:
paris EvmVersion

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 2 : Feedback.sol
//SPDX-License-Identifier: MIT
pragma solidity ^0.8.23;

import "@semaphore-protocol/contracts/interfaces/ISemaphore.sol";

contract Feedback {
    ISemaphore public semaphore;

    uint256 public groupId;

    constructor(address semaphoreAddress) {
        semaphore = ISemaphore(semaphoreAddress);

        groupId = semaphore.createGroup(address(this));
    }

    function joinGroup(uint256 identityCommitment) external {
        semaphore.addMember(groupId, identityCommitment);
    }

    function sendFeedback(
        uint256 merkleTreeDepth,
        uint256 merkleTreeRoot,
        uint256 nullifier,
        uint256 feedback,
        uint256[8] calldata points
    ) external {
        ISemaphore.SemaphoreProof memory proof = ISemaphore.SemaphoreProof(
            merkleTreeDepth,
            merkleTreeRoot,
            nullifier,
            feedback,
            groupId,
            points
        );

        semaphore.validateProof(groupId, proof);
    }
}

File 2 of 2 : ISemaphore.sol
//SPDX-License-Identifier: MIT
pragma solidity 0.8.23;

/// @title Semaphore contract interface.
interface ISemaphore {
    error Semaphore__GroupHasNoMembers();
    error Semaphore__MerkleTreeDepthIsNotSupported();
    error Semaphore__MerkleTreeRootIsExpired();
    error Semaphore__MerkleTreeRootIsNotPartOfTheGroup();
    error Semaphore__YouAreUsingTheSameNullifierTwice();
    error Semaphore__InvalidProof();

    /// It defines all the group parameters used by Semaphore.sol.
    struct Group {
        uint256 merkleTreeDuration;
        mapping(uint256 => uint256) merkleRootCreationDates;
        mapping(uint256 => bool) nullifiers;
    }

    /// It defines all the Semaphore proof parameters used by Semaphore.sol.
    struct SemaphoreProof {
        uint256 merkleTreeDepth;
        uint256 merkleTreeRoot;
        uint256 nullifier;
        uint256 message;
        uint256 scope;
        uint256[8] points;
    }

    /// @dev Event emitted when the Merkle tree duration of a group is updated.
    /// @param groupId: Id of the group.
    /// @param oldMerkleTreeDuration: Old Merkle tree duration of the group.
    /// @param newMerkleTreeDuration: New Merkle tree duration of the group.
    event GroupMerkleTreeDurationUpdated(
        uint256 indexed groupId,
        uint256 oldMerkleTreeDuration,
        uint256 newMerkleTreeDuration
    );

    /// @dev Event emitted when a Semaphore proof is validated.
    /// @param groupId: Id of the group.
    /// @param merkleTreeDepth: Depth of the Merkle tree.
    /// @param merkleTreeRoot: Root of the Merkle tree.
    /// @param nullifier: Nullifier.
    /// @param message: Semaphore message.
    /// @param scope: Scope.
    /// @param points: Zero-knowledge points.
    event ProofValidated(
        uint256 indexed groupId,
        uint256 merkleTreeDepth,
        uint256 indexed merkleTreeRoot,
        uint256 nullifier,
        uint256 message,
        uint256 indexed scope,
        uint256[8] points
    );

    /// @dev Returns the current value of the group counter.
    /// @return The current group counter value.
    function groupCounter() external view returns (uint256);

    /// @dev See {SemaphoreGroups-_createGroup}.
    function createGroup() external returns (uint256);

    /// @dev See {SemaphoreGroups-_createGroup}.
    function createGroup(address admin) external returns (uint256);

    /// @dev It creates a group with a custom Merkle tree duration.
    /// @param admin: Admin of the group. It can be an Ethereum account or a smart contract.
    /// @param merkleTreeDuration: Merkle tree duration.
    /// @return Id of the group.
    function createGroup(address admin, uint256 merkleTreeDuration) external returns (uint256);

    /// @dev See {SemaphoreGroups-_updateGroupAdmin}.
    function updateGroupAdmin(uint256 groupId, address newAdmin) external;

    /// @dev See {SemaphoreGroups-_acceptGroupAdmin}.
    function acceptGroupAdmin(uint256 groupId) external;

    /// @dev Updates the group Merkle tree duration.
    /// @param groupId: Id of the group.
    /// @param newMerkleTreeDuration: New Merkle tree duration.
    function updateGroupMerkleTreeDuration(uint256 groupId, uint256 newMerkleTreeDuration) external;

    /// @dev See {SemaphoreGroups-_addMember}.
    function addMember(uint256 groupId, uint256 identityCommitment) external;

    /// @dev See {SemaphoreGroups-_addMembers}.
    function addMembers(uint256 groupId, uint256[] calldata identityCommitments) external;

    /// @dev See {SemaphoreGroups-_updateMember}.
    function updateMember(
        uint256 groupId,
        uint256 oldIdentityCommitment,
        uint256 newIdentityCommitment,
        uint256[] calldata merkleProofSiblings
    ) external;

    /// @dev See {SemaphoreGroups-_removeMember}.
    function removeMember(uint256 groupId, uint256 identityCommitment, uint256[] calldata merkleProofSiblings) external;

    /// @dev Saves the nullifier hash to prevent double signaling and emits an event
    /// if the zero-knowledge proof is valid.
    /// @param groupId: Id of the group.
    /// @param proof: Semaphore zero-knowledge proof.
    function validateProof(uint256 groupId, SemaphoreProof calldata proof) external;

    /// @dev Verifies a zero-knowledge proof by returning true or false.
    /// @param groupId: Id of the group.
    /// @param proof: Semaphore zero-knowledge proof.
    function verifyProof(uint256 groupId, SemaphoreProof calldata proof) external view returns (bool);
}

Settings
{
  "evmVersion": "paris",
  "optimizer": {
    "enabled": false,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract ABI

[{"inputs":[{"internalType":"address","name":"semaphoreAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"groupId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"identityCommitment","type":"uint256"}],"name":"joinGroup","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"semaphore","outputs":[{"internalType":"contract ISemaphore","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"merkleTreeDepth","type":"uint256"},{"internalType":"uint256","name":"merkleTreeRoot","type":"uint256"},{"internalType":"uint256","name":"nullifier","type":"uint256"},{"internalType":"uint256","name":"feedback","type":"uint256"},{"internalType":"uint256[8]","name":"points","type":"uint256[8]"}],"name":"sendFeedback","outputs":[],"stateMutability":"nonpayable","type":"function"}]

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061004c5760003560e01c80637b5d2534146100515780637b85d27a1461006f578063a0f44c921461008b578063eed02e4b146100a9575b600080fd5b6100596100c5565b6040516100669190610301565b60405180910390f35b6100896004803603810190610084919061037e565b6100e9565b005b6100936101ea565b6040516100a09190610409565b60405180910390f35b6100c360048036038101906100be9190610424565b6101f0565b005b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006040518060c001604052808781526020018681526020018581526020018481526020016001548152602001836008806020026040519081016040528092919082600860200280828437600081840152601f19601f820116905080830192505050505050815250905060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0d898dd600154836040518363ffffffff1660e01b81526004016101b0929190610578565b600060405180830381600087803b1580156101ca57600080fd5b505af11580156101de573d6000803e3d6000fd5b50505050505050505050565b60015481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631783efc3600154836040518363ffffffff1660e01b815260040161024d9291906105a2565b600060405180830381600087803b15801561026757600080fd5b505af115801561027b573d6000803e3d6000fd5b5050505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006102c76102c26102bd84610282565b6102a2565b610282565b9050919050565b60006102d9826102ac565b9050919050565b60006102eb826102ce565b9050919050565b6102fb816102e0565b82525050565b600060208201905061031660008301846102f2565b92915050565b600080fd5b6000819050919050565b61033481610321565b811461033f57600080fd5b50565b6000813590506103518161032b565b92915050565b600080fd5b60008190508260206008028201111561037857610377610357565b5b92915050565b6000806000806000610180868803121561039b5761039a61031c565b5b60006103a988828901610342565b95505060206103ba88828901610342565b94505060406103cb88828901610342565b93505060606103dc88828901610342565b92505060806103ed8882890161035c565b9150509295509295909350565b61040381610321565b82525050565b600060208201905061041e60008301846103fa565b92915050565b60006020828403121561043a5761043961031c565b5b600061044884828501610342565b91505092915050565b61045a81610321565b82525050565b600060089050919050565b600081905092915050565b6000819050919050565b600061048c8383610451565b60208301905092915050565b6000602082019050919050565b6104ae81610460565b6104b8818461046b565b92506104c382610476565b8060005b838110156104f45781516104db8782610480565b96506104e683610498565b9250506001810190506104c7565b505050505050565b6101a0820160008201516105136000850182610451565b5060208201516105266020850182610451565b5060408201516105396040850182610451565b50606082015161054c6060850182610451565b50608082015161055f6080850182610451565b5060a082015161057260a08501826104a5565b50505050565b60006101c08201905061058e60008301856103fa565b61059b60208301846104fc565b9392505050565b60006040820190506105b760008301856103fa565b6105c460208301846103fa565b939250505056fea26469706673582212204372a4ebed6da1576c9fe82880394bc82020da6146e66680b95602739480c5ba64736f6c63430008170033

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
[ 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.