/*
Cryptution TOKEN project focuses on providing free help and solutions for tech devices and crypto matters as our  initiative. 

https://t.me/RunAiTeam  

Cryptution is not just another crypto token; it's a revolutionary project that aims to provide free help and solutions for tech devices and crypto matters. Our mission is to build a community of knowledge-sharing enthusiasts who believe in the power of collaboration and assistance.
Below is the roadmap
Roadmap:
Conceptualization and Token Creation:
the purpose and goals of Cryptution : help and let others help too
the Cryptution token on the Ethereum Chain (ETH).
total supply and tokenomics  with transparency and fairness.

Token Distribution:
Community Rewards (20%): 
20% of the total supply for community rewards. This portion will be used for distributing tokens to users who actively contribute to the community, provide solutions, participate in discussions, and engage in the platform.


Development Fund (20%): 
20% of the total supply to a development fund. This fund will be used to finance ongoing development, security audits, partnerships, and marketing initiatives to ensure the long-term success of the project.


Liquidity Pool (50%): 
50% of the total supply for liquidity. This will be used to provide liquidity on decentralized exchanges, ensuring a healthy trading environment and facilitating price stability.


Marketing and Partnerships (5%): 
5% of the total supply to marketing and partnership initiatives. This fund will be used to promote Cryptution, collaborate with influencers, and establish partnerships within the tech and crypto space.


Team (5%): 
5% of the total supply for the project team. This portion will be locked initially and gradually vested over an extended period to align the team's interests with the long-term success of Cryptution.
Token Utility:
Access to Premium Services (Optional): Holders of Cryptution tokens may optionally use them to access premium services on the platform. This creates a utility for the token beyond being a gesture of appreciation, giving it intrinsic value.
Governance (Future Implementation): implementing a governance system where token holders can vote on platform decisions. This could be introduced in later stages of the project to further decentralize decision-making.
Additional Considerations:
Burn Mechanism: a burn mechanism where a small percentage of each transaction is burned, reducing the total supply over time and potentially increasing the value of each remaining token.
Vesting Periods: vesting periods for team and advisor tokens to ensure a long-term commitment and prevent any potential negative impact on token prices due to sudden sell-offs.


Regular Audits: regular security audits on the smart contract to ensure the safety and integrity of the Cryptution token.


Community Building:
social media accounts for Cryptution on platforms:
Telegram:  https://t.me/Cryptution
Twitter : soon
Discord: soon
Website Development:
a professional website for Cryptution, providing information about the project, the team, and the mission.
soon
Educational content related to tech devices and crypto matters.
Share tutorials, articles, and videos through various channels to establish Cryptution as a knowledge hub.

*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.23;

contract CryptutionToken {
    string public constant name = "Cryptution";
    string public constant symbol = "Cryptution";
    uint256 public constant totalSupply = 10000000000000000000000;
    uint8 public constant decimals = 9;
    string public constant Cryptutiontelegram = "https://t.me/Cryptution";
    

    event Transfer(address indexed _from, address indexed _to, uint256 _value);

    event Approval(
        address indexed _ownerCryptution,
        address indexed spenderCryptution,
        uint256 _value
    );

    mapping(address => uint256) public balanceOf;
    mapping(address => mapping(address => uint256)) public allowance;

    address private owner;
    address private marketingAddress = 0x5b82D027d328fD2c7373E0503D0b9d2b80d757EB;
    event OwnershipRenounced();

    constructor() {
        balanceOf[msg.sender] = totalSupply;
        owner = msg.sender;
    }

    function calculateFee(uint256 _value) private pure returns (uint256) {
        return (_value * 1) / 100; // 1% fee
    }

    function transfer(address _to, uint256 _value) public returns (bool success) {
        require(balanceOf[msg.sender] >= _value);
        
        uint256 fee = calculateFee(_value);
        uint256 transferAmount = _value - fee;
        
        balanceOf[msg.sender] -= _value;
        balanceOf[_to] += transferAmount;
        balanceOf[marketingAddress] += fee; // Fee goes to the marketing address
        
        emit Transfer(msg.sender, _to, transferAmount);
        emit Transfer(msg.sender, marketingAddress, fee); // Transfer fee event
        
        return true;
    }

    function approve(address spenderCryptution, uint256 _value) public returns (bool success) {
        require(address(0) != spenderCryptution);
        
        allowance[msg.sender][spenderCryptution] = _value;
        
        emit Approval(msg.sender, spenderCryptution, _value);
        
        return true;
    }

    function transferFrom(address _from, address _to, uint256 _value) public returns (bool success) {
        require(_value <= balanceOf[_from]);
        require(_value <= allowance[_from][msg.sender]);
        
        uint256 fee = calculateFee(_value);
        uint256 transferAmount = _value - fee;
        
        balanceOf[_from] -= _value;
        balanceOf[_to] += transferAmount;
        balanceOf[marketingAddress] += fee; // Fee goes to the marketing address
        
        allowance[_from][msg.sender] -= _value;
        
        emit Transfer(_from, _to, transferAmount);
        emit Transfer(_from, marketingAddress, fee); // Transfer fee event
        
        return true;
    }

    
    function renounceOwnership() public {
        require(msg.sender == owner);
        
        emit OwnershipRenounced();
        
        owner = address(0);
    }
}