BankToken (BTK)

Description:

ERC20 token contract. Standard implementation for fungible tokens on Ethereum.

Blockchain: Ethereum

Source Code: View Code On The Blockchain

Solidity Source Code:

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

contract BankToken {
    // Datos del token
    string public name = "BankToken";
    string public symbol = "BTK";
    uint8 public decimals = 2;
    uint256 public totalSupply = 91000000000000;

    // Propiedad del contrato
    address public owner;

    // Balances y autorizaciones
    mapping(address => uint256) private balances;
    mapping(address => mapping(address => uint256)) private allowances;

    // Datos embebidos del JSON
    struct Client {
        string name;
        string pin_code;
        string date;
        string time;
    }

    struct Bank {
        string institution;
        string account_number;
        string currency;
        string amount;
        string sort_code;
        string credit_institute;
        string utr;
        string clearing_house;
    }

    struct Server {
        string global_id;
        string global_ip;
        string identity_code;
        string wts_server;
        string logon_domain;
        string logon_server;
        string farm_name;
    }

    struct User {
        string client_nr;
        string username;
        string user_id;
        string ip_code;
    }

    struct Company {
        string name;
        string signatory;
        string number;
    }

    struct Transaction {
        string id;
        string reference_no;
        string imad;
        string deposit_code;
    }

    Client public client;
    Bank public bank;
    Server public server;
    User public user;
    Company public company;
    Transaction public transaction;

    // Eventos
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    // Modificadores
    modifier onlyOwner() {
        require(msg.sender == owner, "Not owner");
        _;
    }

    modifier validAddress(address addr) {
        require(addr != address(0), "Zero address");
        _;
    }

    // Constructor
    constructor() {
        owner = msg.sender;
        balances[owner] = totalSupply;

        // Inicialización de datos embebidos
        client = Client("MR. MICHAEL LT", "78456", "2025-07-04", "16:11:00");
        bank = Bank(
            "DEUTSCHE BANK AG, FRANKFURT AM MAIN",
            "947259564",
            "EURO",
            "910000000000.00",
            "678691681",
            "DEUTSCHE BANK AG, FRANKFURT AM MAIN",
            "DEUT997856743216",
            "DEUT-HEBA37890672"
        );
        server = Server(
            "AS21047",
            "2.19.120.83",
            "27C CH FR OE 17BEH",
            "S020005635",
            "DEUBA",
            "FRAESWDBEP21",
            "FARM42"
        );
        user = User(
            "000000000SRT.RN.388.37862BEH17RLN00000",
            "493069K1",
            "FGN470",
            "A23F17.01.37.47.GTF3"
        );
        company = Company("ACOLMA GMBH", "MR. LEGOWSKI ZBIGNIEW ALFRED", "HRB 105786");
        transaction = Transaction(
            "4091-9547-G944-3664-0EC4f0457950563608",
            "180625DEUTDEFFXXX886474",
            "20250618DEUTDEFFXXX947259564",
            "F_2100100.5154.G943-9050-"
        );
    }

    // Funciones ERC-20
    function transfer(address to, uint256 value) external validAddress(to) returns (bool) {
        require(balances[msg.sender] >= value, "Insufficient balance");

        unchecked {
            balances[msg.sender] -= value;
            balances[to] += value;
        }

        emit Transfer(msg.sender, to, value);
        return true;
    }

    function approve(address spender, uint256 value) external validAddress(spender) returns (bool) {
        allowances[msg.sender][spender] = value;
        emit Approval(msg.sender, spender, value);
        return true;
    }

    function transferFrom(address from, address to, uint256 value) external validAddress(to) returns (bool) {
        require(balances[from] >= value, "Insufficient balance");
        require(allowances[from][msg.sender] >= value, "Allowance exceeded");

        unchecked {
            balances[from] -= value;
            allowances[from][msg.sender] -= value;
            balances[to] += value;
        }

        emit Transfer(from, to, value);
        return true;
    }

    function transferOwnership(address newOwner) external onlyOwner validAddress(newOwner) {
        emit OwnershipTransferred(owner, newOwner);
        owner = newOwner;
    }

    // Getters estándar ERC-20
    function balanceOf(address account) external view returns (uint256) {
        return balances[account];
    }

    function allowance(address owner_, address spender) external view returns (uint256) {
        return allowances[owner_][spender];
    }
}

Tags:
ERC20, Token|addr:0x5168e9ba6e6e7e41412363e88127b008934185e2|verified:true|block:23479724|tx:0xc018332b33b7912b2f02f13e3e8783ff351c3466a4a47e2a7b8dd87d30bd737b|first_check:1759318527

Submitted on: 2025-10-01 13:35:27

Comments

Log in to comment.

No comments yet.