Hi,
There is an option to burn tokens from one contract and in same function to mint in another contract?
I try something like that, but not work:
pragma solidity ^0.8.10;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol";
import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
import "@openzeppelin/contracts/utils/Counters.sol";
contract VrsCoin is ERC20 {
mapping(address => uint) public userLevel;
constructor() ERC20("vrsCoin", "VRS") {
_mint(msg.sender, 1000000 * 10 ** decimals());
}
function makeBurn(uint256 amount) public {
_burn(msg.sender, amount);
incrementLevel();
}
function incrementLevel() internal {
userLevel[msg.sender]++;
}
function getMyLevel() public view returns(uint){
return userLevel[msg.sender];
}
function getAddrLevel(address addr) public view returns(uint){
return userLevel[addr];
}
function burnToMint() public view returns(uint) {
_burn(msg.sender,1000000);
VrsToken vt;
vt.safeMint(msg.sender);
}
}
contract VrsToken is ERC721, Ownable {
using Counters for Counters.Counter;
Counters.Counter private _tokenIdCounter;
constructor() ERC721("vrsToken", "VTK") {}
function safeMint(address to) public onlyOwner {
uint256 tokenId = _tokenIdCounter.current();
_tokenIdCounter.increment();
_safeMint(to, tokenId);
}
}