// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract Goolf {
string public name = "Goolf";
string public symbol = "GF";
uint256 public totalSupply;
mapping(uint256 => address) public ownerOf;
mapping(address => uint256) public balanceOf;
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);
function mint() public {
uint256 tokenId = totalSupply + 1;
totalSupply = tokenId;
ownerOf[tokenId] = msg.sender;
balanceOf[msg.sender] += 1;
emit Transfer(address(0), msg.sender, tokenId);
}
function transfer(address to, uint256 tokenId) public {
require(ownerOf[tokenId] == msg.sender, "You are not the owner of this token");
ownerOf[tokenId] = to;
balanceOf[msg.sender] -= 1;
balanceOf[to] += 1;
emit Transfer(msg.sender, to, tokenId);
}
}
{
"compilationTarget": {
"Goolf.sol": "Goolf"
},
"evmVersion": "cancun",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs"
},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
}
[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transfer","outputs":[],"stateMutability":"nonpayable","type":"function"}]