Skip to content

Instantly share code, notes, and snippets.

@fassko
Created October 27, 2022 16:17
Show Gist options
  • Save fassko/ad4c62aa4a3e70cf2e23d2112b2da55b to your computer and use it in GitHub Desktop.
Save fassko/ad4c62aa4a3e70cf2e23d2112b2da55b to your computer and use it in GitHub Desktop.
Created using remix-ide: Realtime Ethereum Contract Compiler and Runtime. Load this file by pasting this gists URL or ID at https://remix.ethereum.org/#version=soljson-v0.8.7+commit.e28d00a7.js&optimize=false&runs=200&gist=
//SPDX-License-Identifier: Unlicense
pragma solidity ^0.8.0;
import "hardhat/console.sol";
import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
import "@openzeppelin/contracts/utils/Counters.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol";
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
// https://ipfs.io/ipfs/Qmek58Wu79N1hHcS4Ay97ZS8mMWaUnsszkK1LD1xgjaA2u
contract Rewardo is ERC721URIStorage, Ownable {
using Counters for Counters.Counter;
Counters.Counter private _tokenIds;
IERC20 bonusToken;
constructor(IERC20 _bonusToken) ERC721("Rewardo", "RWD") {
bonusToken = _bonusToken;
}
function rewardEmployee(address _address, uint256 bonusTokens, string memory tokenURI) external onlyOwner
returns (uint256)
{
_tokenIds.increment();
uint256 newItemId = _tokenIds.current();
_mint(_address, newItemId);
_setTokenURI(newItemId, tokenURI);
console.log("Token ID minted", newItemId);
bonusToken.transfer(_address, bonusTokens);
return newItemId;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment