Token Address
The official token address for 4ART is:
0xFF44b5719f0B77A9951636fc5e69d3a1fc9E7d73
Source Code Documentation
// SPDX-License-Identifier: MIT
pragma solidity ^0.5.17;
/**
* @title SafeMath
* @dev Library for safe mathematical operations to prevent overflow/underflow issues.
*/
library SafeMath {
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a * b;
require(a == 0 || c / a == b, "Multiplication overflow");
return c;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
require(b <= a, "Subtraction overflow");
return a - b;
}
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "Addition overflow");
return c;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
require(b > 0, "Division by zero");
return a / b;
}
}
/**
* @title ERC20Basic
* @dev Simplified ERC20 interface with basic functionality.
*/
contract ERC20Basic {
uint256 public totalSupply;
function balanceOf(address who) public view returns (uint256);
function transfer(address to, uint256 value) public returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
}
/**
* @title BasicToken
* @dev Implements basic token functionality without allowances.
*/
contract BasicToken is ERC20Basic {
using SafeMath for uint256;
mapping(address => uint256) public balances;
function balanceOf(address _owner) public view returns (uint256 balance) {
return balances[_owner];
}
}
/**
* @title StandardToken
* @dev Full implementation of the ERC20 standard.
*/
contract StandardToken is BasicToken {
mapping (address => mapping (address => uint256)) internal allowed;
function approve(address _spender, uint256 _value) public returns (bool) {
allowed[msg.sender][_spender] = _value;
emit Approval(msg.sender, _spender, _value);
return true;
}
function allowance(address _owner, address _spender) public view returns (uint256) {
return allowed[_owner][_spender];
}
}
/**
* @title Owned
* @dev Provides ownership functionality.
*/
contract Owned {
address payable public owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
constructor() public {
owner = msg.sender;
}
modifier onlyOwner {
require(msg.sender == owner, "Caller is not the owner");
_;
}
}
/**
* @title FourArt
* @dev Main contract implementing the 4ART token.
*/
contract FourArt is StandardToken, Owned {
string public constant name = "4ArtCoin";
string public constant symbol = "4Art";
uint8 public constant decimals = 18;
constructor() public {
totalSupply = 3508500000e18;
balances[msg.sender] = totalSupply;
}
}
Clarifications on potential vulnerabilities
The following points address potential claims regarding vulnerabilities in the 4ART token contract:
- Owner Access: The contract does not allow the owner to access user wallets. The "owner" can only manage contract-specific functions, such as setting buy/sell prices or withdrawing contract-held funds.
-
Standard ERC20 Implementation: The contract adheres to the ERC20 standard and uses
SafeMath
to ensure safe arithmetic operations, reducing the risk of overflows or underflows. - User Funds: Token balances are stored securely in a mapping, and the owner cannot directly manipulate user balances.
- Transparency: The contract uses industry-standard practices, and all transactions are logged via events, ensuring full visibility.
Conclusion
The 4ART smart contract is a standard ERC20 implementation that prioritizes security and functionality. Potential claims about vulnerabilities might stem from a misunderstanding of the contract's operations. The contract was audited by BITTREX and P2B before listing on their platform. An independent audit can further verify its robustness and adherence to industry standards.