Transaction Hash:
Block:
17331394 at May-24-2023 08:22:35 PM +UTC
Transaction Fee:
0.001236000810710688 ETH
$2.56
Gas Used:
34,584 Gas / 35.739093532 Gwei
Emitted Events:
| 317 |
OSYC.Transfer( from=[Sender] 0x3dca49f1e5be38bf63ea1fc8a370e21825da18b6, to=0x031955F447Cb13F0804bC74B915bC464b2AaD9b0, value=10000000000000000000 )
|
Account State Difference:
| Address | Before | After | State Difference | ||
|---|---|---|---|---|---|
| 0x3dca49f1...825DA18b6 |
0.059221621700637434 Eth
Nonce: 570
|
0.057985620889926746 Eth
Nonce: 571
| 0.001236000810710688 | ||
|
0xDAFEA492...692c98Bc5
Miner
| (Flashbots: Builder) | 0.209818360274500221 Eth | 0.209821611170500221 Eth | 0.000003250896 | |
| 0xdDEF9122...dC5831079 |
Execution Trace
OSYC.transfer( recipient=0x031955F447Cb13F0804bC74B915bC464b2AaD9b0, amount=10000000000000000000 ) => ( True )
{"Context.sol":{"content":"// SPDX-License-Identifier: MIT\n\n/***************************************************************************\n ___ __ _ __ __ __ ___\n / __ \\ / /_ _____(_)___/ /____ \\ \\ / / _ \\\n / / / /_ __/ __/ / ___/ / __ / __ ) \\ / /| |\n / /_/ / /_/ / /_ (__ ) / /_/ / ____/ | | | |_\n \\____/\\____/\\__/ /____/_/\\__,_/\\____/ |_| \\___/\n \n****************************************************************************/\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n function _msgSender() internal view virtual returns (address) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes calldata) {\n return msg.data;\n }\n}\n"},"OSYC.sol":{"content":"// SPDX-License-Identifier: MIT\n\n/***************************************************************************\n ___ __ _ __ __ __ ___\n / __ \\ / /_ _____(_)___/ /____ \\ \\ / / _ \\\n / / / /_ __/ __/ / ___/ / __ / __ ) \\ / /| |\n / /_/ / /_/ / /_ (__ ) / /_/ / ____/ | | | |_\n \\____/\\____/\\__/ /____/_/\\__,_/\\____/ |_| \\___/\n \n****************************************************************************/\n\npragma solidity ^0.8.0;\n\nimport \"./SafeMath.sol\";\nimport \"./Ownable.sol\";\n\ncontract OSYC is Ownable {\n using SafeMath for uint256;\n\n mapping(address =\u003e uint256) private _balances;\n mapping(address =\u003e mapping(address =\u003e uint256)) private _allowances;\n\n string private _name;\n string private _symbol;\n uint8 private _decimals;\n\n uint256 _totalSupply;\n uint256 public MAX_SUPPLY;\n\n mapping(address =\u003e bool) public managers;\n\n event Transfer(address indexed from, address indexed to, uint256 value);\n event Approval(\n address indexed owner,\n address indexed spender,\n uint256 value\n );\n\n constructor() {\n _name = \"Outside YC\";\n _symbol = \"$OSYC\";\n _decimals = 18;\n\n MAX_SUPPLY = 4000000 ether;\n }\n\n function addManager(address _address) external onlyOwner {\n managers[_address] = true;\n }\n\n function removeManager(address _address) external onlyOwner {\n managers[_address] = false;\n }\n\n function name() public view returns (string memory) {\n return _name;\n }\n\n function symbol() public view returns (string memory) {\n return _symbol;\n }\n\n function decimals() public view returns (uint8) {\n return _decimals;\n }\n\n function totalSupply() public view returns (uint256) {\n return _totalSupply;\n }\n\n function balanceOf(address account) public view returns (uint256) {\n return _balances[account];\n }\n\n function transfer(address recipient, uint256 amount) public returns (bool) {\n _transfer(_msgSender(), recipient, amount);\n\n return true;\n }\n\n function allowance(address owner, address spender)\n public\n view\n returns (uint256)\n {\n return _allowances[owner][spender];\n }\n\n function approve(address spender, uint256 amount) public returns (bool) {\n _approve(_msgSender(), spender, amount);\n\n return true;\n }\n\n function transferFrom(\n address sender,\n address recipient,\n uint256 amount\n ) public returns (bool) {\n _approve(\n sender,\n _msgSender(),\n _allowances[sender][_msgSender()].sub(amount)\n );\n _transfer(sender, recipient, amount);\n\n return true;\n }\n\n function _transfer(\n address sender,\n address recipient,\n uint256 amount\n ) internal virtual {\n require(sender != address(0x0));\n require(recipient != address(0x0));\n\n _balances[sender] = _balances[sender].sub(amount);\n _balances[recipient] = _balances[recipient].add(amount);\n\n emit Transfer(sender, recipient, amount);\n }\n\n function mint(address to, uint256 amount) public {\n require(\n managers[msg.sender] == true,\n \"This address is not allowed to interact with the contract\"\n );\n _mint(to, amount);\n }\n\n function _mint(address account, uint256 amount) internal virtual {\n require(account != address(0x0));\n require(\n MAX_SUPPLY \u003e= _totalSupply.add(amount),\n \"limited by Max Supply\"\n );\n\n _totalSupply = _totalSupply.add(amount);\n _balances[account] = _balances[account].add(amount);\n\n emit Transfer(address(0x0), account, amount);\n }\n\n function burn(address from, uint256 amount) external {\n require(\n managers[msg.sender] == true,\n \"This address is not allowed to interact with the contract\"\n );\n _burn(from, amount);\n }\n\n function burn(uint256 amount) external {\n _burn(msg.sender, amount);\n }\n\n function _burn(address account, uint256 amount) internal virtual {\n require(account != address(0x0));\n\n _balances[account] = _balances[account].sub(amount);\n _totalSupply = _totalSupply.sub(amount);\n\n emit Transfer(account, address(0x0), amount);\n }\n\n function _approve(\n address owner,\n address spender,\n uint256 amount\n ) internal virtual {\n require(owner != address(0x0));\n require(spender != address(0x0));\n\n _allowances[owner][spender] = amount;\n\n emit Approval(owner, spender, amount);\n }\n}\n"},"Ownable.sol":{"content":"// SPDX-License-Identifier: MIT\n\n/***************************************************************************\n ___ __ _ __ __ __ ___\n / __ \\ / /_ _____(_)___/ /____ \\ \\ / / _ \\\n / / / /_ __/ __/ / ___/ / __ / __ ) \\ / /| |\n / /_/ / /_/ / /_ (__ ) / /_/ / ____/ | | | |_\n \\____/\\____/\\__/ /____/_/\\__,_/\\____/ |_| \\___/\n \n****************************************************************************/\n\n\npragma solidity ^0.8.0;\n\nimport \"./Context.sol\";\n\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * By default, the owner account will be the one that deploys the contract. This\n * can later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */\nabstract contract Ownable is Context {\n address private _owner;\n\n event OwnershipTransferred(\n address indexed previousOwner,\n address indexed newOwner\n );\n\n /**\n * @dev Initializes the contract setting the deployer as the initial owner.\n */\n constructor() {\n address msgSender = _msgSender();\n _owner = msgSender;\n emit OwnershipTransferred(address(0), msgSender);\n }\n\n /**\n * @dev Returns the address of the current owner.\n */\n function owner() public view virtual returns (address) {\n return _owner;\n }\n\n /**\n * @dev Throws if called by any account other than the owner.\n */\n modifier onlyOwner() {\n require(owner() == _msgSender(), \"Ownable: caller is not the owner\");\n _;\n }\n\n /**\n * @dev Leaves the contract without owner. It will not be possible to call\n * `onlyOwner` functions anymore. Can only be called by the current owner.\n *\n * NOTE: Renouncing ownership will leave the contract without an owner,\n * thereby removing any functionality that is only available to the owner.\n */\n function renounceOwnership() public virtual onlyOwner {\n emit OwnershipTransferred(_owner, address(0));\n _owner = address(0);\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Can only be called by the current owner.\n */\n function transferOwnership(address newOwner) public virtual onlyOwner {\n require(\n newOwner != address(0),\n \"Ownable: new owner is the zero address\"\n );\n emit OwnershipTransferred(_owner, newOwner);\n _owner = newOwner;\n }\n}\n"},"SafeMath.sol":{"content":"// SPDX-License-Identifier: MIT\n\n/***************************************************************************\n ___ __ _ __ __ __ ___\n / __ \\ / /_ _____(_)___/ /____ \\ \\ / / _ \\\n / / / /_ __/ __/ / ___/ / __ / __ ) \\ / /| |\n / /_/ / /_/ / /_ (__ ) / /_/ / ____/ | | | |_\n \\____/\\____/\\__/ /____/_/\\__,_/\\____/ |_| \\___/\n \n****************************************************************************/\n\npragma solidity ^0.8.0;\n\n// CAUTION\n// This version of SafeMath should only be used with Solidity 0.8 or later,\n// because it relies on the compiler\u0027s built in overflow checks.\n\n/**\n * @dev Wrappers over Solidity\u0027s arithmetic operations.\n *\n * NOTE: `SafeMath` is generally not needed starting with Solidity 0.8, since the compiler\n * now has built in overflow checking.\n */\nlibrary SafeMath {\n /**\n * @dev Returns the addition of two unsigned integers, with an overflow flag.\n *\n * _Available since v3.4._\n */\n function tryAdd(uint256 a, uint256 b)\n internal\n pure\n returns (bool, uint256)\n {\n unchecked {\n uint256 c = a + b;\n if (c \u003c a) return (false, 0);\n return (true, c);\n }\n }\n\n /**\n * @dev Returns the substraction of two unsigned integers, with an overflow flag.\n *\n * _Available since v3.4._\n */\n function trySub(uint256 a, uint256 b)\n internal\n pure\n returns (bool, uint256)\n {\n unchecked {\n if (b \u003e a) return (false, 0);\n return (true, a - b);\n }\n }\n\n /**\n * @dev Returns the multiplication of two unsigned integers, with an overflow flag.\n *\n * _Available since v3.4._\n */\n function tryMul(uint256 a, uint256 b)\n internal\n pure\n returns (bool, uint256)\n {\n unchecked {\n // Gas optimization: this is cheaper than requiring \u0027a\u0027 not being zero, but the\n // benefit is lost if \u0027b\u0027 is also tested.\n // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\n if (a == 0) return (true, 0);\n uint256 c = a * b;\n if (c / a != b) return (false, 0);\n return (true, c);\n }\n }\n\n /**\n * @dev Returns the division of two unsigned integers, with a division by zero flag.\n *\n * _Available since v3.4._\n */\n function tryDiv(uint256 a, uint256 b)\n internal\n pure\n returns (bool, uint256)\n {\n unchecked {\n if (b == 0) return (false, 0);\n return (true, a / b);\n }\n }\n\n /**\n * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.\n *\n * _Available since v3.4._\n */\n function tryMod(uint256 a, uint256 b)\n internal\n pure\n returns (bool, uint256)\n {\n unchecked {\n if (b == 0) return (false, 0);\n return (true, a % b);\n }\n }\n\n /**\n * @dev Returns the addition of two unsigned integers, reverting on\n * overflow.\n *\n * Counterpart to Solidity\u0027s `+` operator.\n *\n * Requirements:\n *\n * - Addition cannot overflow.\n */\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\n return a + b;\n }\n\n /**\n * @dev Returns the subtraction of two unsigned integers, reverting on\n * overflow (when the result is negative).\n *\n * Counterpart to Solidity\u0027s `-` operator.\n *\n * Requirements:\n *\n * - Subtraction cannot overflow.\n */\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n return a - b;\n }\n\n /**\n * @dev Returns the multiplication of two unsigned integers, reverting on\n * overflow.\n *\n * Counterpart to Solidity\u0027s `*` operator.\n *\n * Requirements:\n *\n * - Multiplication cannot overflow.\n */\n function mul(uint256 a, uint256 b) internal pure returns (uint256) {\n return a * b;\n }\n\n /**\n * @dev Returns the integer division of two unsigned integers, reverting on\n * division by zero. The result is rounded towards zero.\n *\n * Counterpart to Solidity\u0027s `/` operator.\n *\n * Requirements:\n *\n * - The divisor cannot be zero.\n */\n function div(uint256 a, uint256 b) internal pure returns (uint256) {\n return a / b;\n }\n\n /**\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n * reverting when dividing by zero.\n *\n * Counterpart to Solidity\u0027s `%` operator. This function uses a `revert`\n * opcode (which leaves remaining gas untouched) while Solidity uses an\n * invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n *\n * - The divisor cannot be zero.\n */\n function mod(uint256 a, uint256 b) internal pure returns (uint256) {\n return a % b;\n }\n\n /**\n * @dev Returns the subtraction of two unsigned integers, reverting with custom message on\n * overflow (when the result is negative).\n *\n * CAUTION: This function is deprecated because it requires allocating memory for the error\n * message unnecessarily. For custom revert reasons use {trySub}.\n *\n * Counterpart to Solidity\u0027s `-` operator.\n *\n * Requirements:\n *\n * - Subtraction cannot overflow.\n */\n function sub(\n uint256 a,\n uint256 b,\n string memory errorMessage\n ) internal pure returns (uint256) {\n unchecked {\n require(b \u003c= a, errorMessage);\n return a - b;\n }\n }\n\n /**\n * @dev Returns the integer division of two unsigned integers, reverting with custom message on\n * division by zero. The result is rounded towards zero.\n *\n * Counterpart to Solidity\u0027s `/` operator. Note: this function uses a\n * `revert` opcode (which leaves remaining gas untouched) while Solidity\n * uses an invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n *\n * - The divisor cannot be zero.\n */\n function div(\n uint256 a,\n uint256 b,\n string memory errorMessage\n ) internal pure returns (uint256) {\n unchecked {\n require(b \u003e 0, errorMessage);\n return a / b;\n }\n }\n\n /**\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n * reverting with custom message when dividing by zero.\n *\n * CAUTION: This function is deprecated because it requires allocating memory for the error\n * message unnecessarily. For custom revert reasons use {tryMod}.\n *\n * Counterpart to Solidity\u0027s `%` operator. This function uses a `revert`\n * opcode (which leaves remaining gas untouched) while Solidity uses an\n * invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n *\n * - The divisor cannot be zero.\n */\n function mod(\n uint256 a,\n uint256 b,\n string memory errorMessage\n ) internal pure returns (uint256) {\n unchecked {\n require(b \u003e 0, errorMessage);\n return a % b;\n }\n }\n}\n"}}