xDAI Price: $0.999428 (-0.00%)

Contract

0x2C602C7B590ABFc148d8c7c5e4d58c56Be1d304a

Overview

XDAI Balance

Gnosis Chain LogoGnosis Chain LogoGnosis Chain Logo0 XDAI

XDAI Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Block
From
To
Set Mech Marketp...386623752025-02-20 17:50:15338 days ago1740073815IN
0x2C602C7B...6Be1d304a
0 XDAI0.000055771

View more zero value Internal Transactions in Advanced View mode

Cross-Chain Transactions
Loading...
Loading

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

Contract Name:
KarmaProxy

Compiler Version
v0.8.28+commit.7893614a

Optimization Enabled:
Yes with 1000000 runs

Other Settings:
cancun EvmVersion

Contract Source Code (Solidity Standard Json-Input format)

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.28;

/// @dev Zero implementation address.
error ZeroImplementationAddress();

/// @dev Zero karma data.
error ZeroKarmaData();

/// @dev Proxy initialization failed.
error InitializationFailed();

/*
* This is a Karma proxy contract.
* Proxy implementation is created based on the Universal Upgradeable Proxy Standard (UUPS) EIP-1822.
* The implementation address must be located in a unique storage slot of the proxy contract.
* The upgrade logic must be located in the implementation contract.
* Special karma implementation address slot is produced by hashing the "KARMA_PROXY"
* string in order to make the slot unique.
* The fallback() implementation for all the delegatecall-s is inspired by the Gnosis Safe set of contracts.
*/

/// @title KarmaProxy - Smart contract for karma proxy
/// @author Aleksandr Kuperman - <[email protected]>
/// @author Andrey Lebedev - <[email protected]>
/// @author Mariapia Moscatiello - <[email protected]>
contract KarmaProxy {
    // Code position in storage is keccak256("KARMA_PROXY") = "0x1e4b6d67098d4183ce03b91c95f9376a98c5440ec22f2cf171d6dca04a5a29d8"
    bytes32 public constant KARMA_PROXY = 0x1e4b6d67098d4183ce03b91c95f9376a98c5440ec22f2cf171d6dca04a5a29d8;

    /// @dev KarmaProxy constructor.
    /// @param implementation Karma implementation address.
    /// @param karmaData Karma initialization data.
    constructor(address implementation, bytes memory karmaData) {
        // Check for the zero address, since the delegatecall works even with the zero one
        if (implementation == address(0)) {
            revert ZeroImplementationAddress();
        }

        // Check for the zero data
        if (karmaData.length == 0) {
            revert ZeroKarmaData();
        }

        // Store the karma implementation address
        assembly {
            sstore(KARMA_PROXY, implementation)
        }
        // Initialize proxy tokenomics storage
        (bool success, ) = implementation.delegatecall(karmaData);
        if (!success) {
            revert InitializationFailed();
        }
    }

    /// @dev Delegatecall to all the incoming data.
    fallback() external {
        assembly {
            let implementation := sload(KARMA_PROXY)
            calldatacopy(0, 0, calldatasize())
            let success := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)
            returndatacopy(0, 0, returndatasize())
            if eq(success, 0) {
                revert(0, returndatasize())
            }
            return(0, returndatasize())
        }
    }

    /// @dev Gets the implementation address.
    /// @return implementation Implementation address.
    function getImplementation() external view returns (address implementation) {
        // solhint-disable-next-line avoid-low-level-calls
        assembly {
            implementation := sload(KARMA_PROXY)
        }
    }
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 1000000
  },
  "evmVersion": "cancun",
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "metadata": {
    "useLiteralContent": true
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"implementation","type":"address"},{"internalType":"bytes","name":"karmaData","type":"bytes"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"InitializationFailed","type":"error"},{"inputs":[],"name":"ZeroImplementationAddress","type":"error"},{"inputs":[],"name":"ZeroKarmaData","type":"error"},{"stateMutability":"nonpayable","type":"fallback"},{"inputs":[],"name":"KARMA_PROXY","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getImplementation","outputs":[{"internalType":"address","name":"implementation","type":"address"}],"stateMutability":"view","type":"function"}]

0x608060405234801561000f575f5ffd5b5060405161034438038061034483398101604081905261002e9161012d565b6001600160a01b0382166100555760405163d02c623d60e01b815260040160405180910390fd5b80515f0361007657604051630113854b60e61b815260040160405180910390fd5b817f1e4b6d67098d4183ce03b91c95f9376a98c5440ec22f2cf171d6dca04a5a29d8555f826001600160a01b0316826040516100b291906101fc565b5f60405180830381855af49150503d805f81146100ea576040519150601f19603f3d011682016040523d82523d5f602084013e6100ef565b606091505b505090508061011157604051630337323560e31b815260040160405180910390fd5b505050610212565b634e487b7160e01b5f52604160045260245ffd5b5f5f6040838503121561013e575f5ffd5b82516001600160a01b0381168114610154575f5ffd5b60208401519092506001600160401b0381111561016f575f5ffd5b8301601f8101851361017f575f5ffd5b80516001600160401b0381111561019857610198610119565b604051601f8201601f19908116603f011681016001600160401b03811182821017156101c6576101c6610119565b6040528181528282016020018710156101dd575f5ffd5b8160208401602083015e5f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b6101258061021f5f395ff3fe6080604052348015600e575f5ffd5b50600436106030575f3560e01c8063aaf10f42146070578063fc3aecd01460bc575b7f1e4b6d67098d4183ce03b91c95f9376a98c5440ec22f2cf171d6dca04a5a29d854365f5f375f5f365f845af490503d5f5f3e80606b573d5ffd5b503d5ff35b7f1e4b6d67098d4183ce03b91c95f9376a98c5440ec22f2cf171d6dca04a5a29d85460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b60e27f1e4b6d67098d4183ce03b91c95f9376a98c5440ec22f2cf171d6dca04a5a29d881565b60405190815260200160b356fea26469706673582212200379ea759833b3f61cbc782b89307b78c478ea4aa7554d50901f54573747fc9c64736f6c634300081c0033000000000000000000000000e3fd2799dbe6847b9161229e7f346f73b270e6a4000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000048129fc1c00000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x6080604052348015600e575f5ffd5b50600436106030575f3560e01c8063aaf10f42146070578063fc3aecd01460bc575b7f1e4b6d67098d4183ce03b91c95f9376a98c5440ec22f2cf171d6dca04a5a29d854365f5f375f5f365f845af490503d5f5f3e80606b573d5ffd5b503d5ff35b7f1e4b6d67098d4183ce03b91c95f9376a98c5440ec22f2cf171d6dca04a5a29d85460405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b60e27f1e4b6d67098d4183ce03b91c95f9376a98c5440ec22f2cf171d6dca04a5a29d881565b60405190815260200160b356fea26469706673582212200379ea759833b3f61cbc782b89307b78c478ea4aa7554d50901f54573747fc9c64736f6c634300081c0033

Block Transaction Gas Used Reward
view all blocks validated

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

Validator Index Block Amount
View All Withdrawals

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