Cryo Explorer Ethereum Mainnet

Address Contract Partially Verified

Address 0x46f551F9e77B105D58849DC2BE446F4564A05A35
Balance 0 ETH
Nonce 1
Code Size 2123 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

2123 bytes
0x608060405234801561000f575f80fd5b5060043610610090575f3560e01c8063313ce56711610063578063313ce5671461011f57806370a082311461013957806395d89b4114610094578063a9059cbb1461014c578063dd62ed3e1461015f575f80fd5b806306fdde0314610094578063095ea7b3146100d357806318160ddd146100f657806323b872dd1461010c575b5f80fd5b6100bd6040518060400160405280600a8152602001694d6f64756c617269736d60b01b81525081565b6040516100ca9190610699565b60405180910390f35b6100e66100e13660046106e9565b610172565b60405190151581526020016100ca565b6100fe5f5481565b6040519081526020016100ca565b6100e661011a366004610711565b61023f565b610127601281565b60405160ff90911681526020016100ca565b6100fe61014736600461074b565b6104a7565b6100e661015a3660046106e9565b610519565b6100fe61016d366004610764565b61061f565b5f826001600160a01b0316336001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516101b891815260200190565b60405180910390a36001546040516323538b6760e01b81526001600160a01b03909116906323538b67906101f6903390879087903090600401610795565b6020604051808303815f875af1158015610212573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061023691906107c0565b90505b92915050565b60015460405163927da10560e01b81526001600160a01b0385811660048301523360248301523060448301525f92839291169063927da10590606401602060405180830381865afa158015610296573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102ba91906107df565b90508281101561031b5760405162461bcd60e51b815260206004820152602160248201527f5472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636044820152606560f81b60648201526084015b60405180910390fd5b60025460405163f9ce781360e01b81525f916001600160a01b03169063f9ce781390610351908990899089903090600401610795565b6020604051808303815f875af115801561036d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061039191906107c0565b9050806103d35760405162461bcd60e51b815260206004820152601060248201526f2a3930b739b332b9103330b4b632b21760811b6044820152606401610312565b6001546001600160a01b03166323538b6787336103f088876107f6565b306040518563ffffffff1660e01b81526004016104109493929190610795565b6020604051808303815f875af115801561042c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061045091906107c0565b50846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161049691815260200190565b60405180910390a395945050505050565b600254604051633de222bb60e21b81526001600160a01b0383811660048301523060248301525f92169063f7888aec90604401602060405180830381865afa1580156104f5573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061023991906107df565b5f826001600160a01b0316336001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161055f91815260200190565b60405180910390a360025460405163f9ce781360e01b81525f916001600160a01b03169063f9ce78139061059d903390889088903090600401610795565b6020604051808303815f875af11580156105b9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105dd91906107c0565b9050806102365760405162461bcd60e51b815260206004820152601060248201526f2a3930b739b332b9103330b4b632b21760811b6044820152606401610312565b60015460405163927da10560e01b81526001600160a01b03848116600483015283811660248301523060448301525f92169063927da10590606401602060405180830381865afa158015610675573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061023691906107df565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b03811681146106e4575f80fd5b919050565b5f80604083850312156106fa575f80fd5b610703836106ce565b946020939093013593505050565b5f805f60608486031215610723575f80fd5b61072c846106ce565b925061073a602085016106ce565b929592945050506040919091013590565b5f6020828403121561075b575f80fd5b610236826106ce565b5f8060408385031215610775575f80fd5b61077e836106ce565b915061078c602084016106ce565b90509250929050565b6001600160a01b03948516815292841660208401526040830191909152909116606082015260800190565b5f602082840312156107d0575f80fd5b81518015158114610236575f80fd5b5f602082840312156107ef575f80fd5b5051919050565b8181038181111561023957634e487b7160e01b5f52601160045260245ffdfea2646970667358221220f095b6d8d240c9ad4472570ac9132ad8b573965dda60c8599b0bcbe1c7c5dfbb64736f6c634300081a0033

Verified Source Code Partial Match

Compiler: v0.8.26+commit.8a97fa7a EVM: cancun Optimization: Yes (200 runs)
MainContract.sol 72 lines
// SPDX-License-Identifier: MIT
// Twitter: https://x.com/ModularismEth
// Telegram: https://t.me/Modularismeth
// Website: https://modularism.io/
// Github: https://github.com/Modularismio/modularismv1/tree/main

// { ERC-M } Modularism allows you to create modular Solidity contracts, providing low transaction fees and secure systems.
// The Modularism Smart Contract provides low-cost and secure token transfers and spending allowance management on the Ethereum network. Token transfers and balances are managed with BalanceContract, while spending allowances are managed with ApproveContract. This modular structure makes transactions easy and secure.
pragma solidity ^0.8.26;

interface IApproveContract {
    function approve(address owner, address spender, uint256 amount, address ca) external returns (bool);
    function allowance(address owner, address spender, address ca) external view returns (uint256);
}

interface IBalanceContract {
    function transfer(address sender, address recipient, uint256 amount, address ca) external returns (bool);
    function balanceOf(address account, address ca) external view returns (uint256);
    function register(address ca, uint256 totalSupply) external;
}

contract MainContract {
    string public constant name = "Modularism";
    string public constant symbol = "Modularism";
    uint8 public constant decimals = 18;

    uint256 public totalSupply = 100000 * (10 ** uint256(decimals));

    IApproveContract private _approveContract;
    IBalanceContract private _balanceContract;

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);

    constructor(address approveAddress, address balanceAddress) {
        _approveContract = IApproveContract(approveAddress);
        _balanceContract = IBalanceContract(balanceAddress);
        _balanceContract.register(address(this), totalSupply);
        emit Transfer(address(0), msg.sender, totalSupply);

    }

    function transfer(address to, uint256 amount) public returns (bool) {
        emit Transfer(msg.sender, to, amount);
        bool success = _balanceContract.transfer(msg.sender, to, amount, address(this));
        require(success, "Transfer failed.");
        return success;
    }

    function transferFrom(address from, address to, uint256 amount) public returns (bool) {
        uint256 currentAllowance = _approveContract.allowance(from, msg.sender, address(this));
        require(currentAllowance >= amount, "Transfer amount exceeds allowance");
        bool success = _balanceContract.transfer(from, to, amount, address(this));
        require(success, "Transfer failed.");
        _approveContract.approve(from, msg.sender, currentAllowance - amount, address(this));
        emit Transfer(from, to, amount);
        return success;
    }

    function balanceOf(address account) public view returns (uint256) {
        return _balanceContract.balanceOf(account, address(this));
    }

    function approve(address spender, uint256 amount) public returns (bool) {
        emit Approval(msg.sender, spender, amount);
        return _approveContract.approve(msg.sender, spender, amount, address(this));
    }

    function allowance(address owner, address spender) public view returns (uint256) {
        return _approveContract.allowance(owner, spender, address(this));
    }
}

Read Contract

allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
decimals 0x313ce567 → uint8
name 0x06fdde03 → string
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256

Write Contract 3 functions

These functions modify contract state and require a wallet transaction to execute.

approve 0x095ea7b3
address spender
uint256 amount
returns: bool
transfer 0xa9059cbb
address to
uint256 amount
returns: bool
transferFrom 0x23b872dd
address from
address to
uint256 amount
returns: bool

Recent Transactions

No transactions found for this address