Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion .env.sample
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,6 @@

TESTNET_MNEMONIC=<insert your mnemonic here for testnet deployments>
MAINNET_MNEMONIC=<insert your mnemonic here for mainnet deployments>
MAINNET_PRIVATE_KEY=<insert private key here>
MAINNET_PRIVATE_KEY=<insert private key here>
DEFENDER_TEAM_API_KEY=<insert key>
DEFENDER_TEAM_API_SECRET=<insert secret>
779 changes: 779 additions & 0 deletions .openzeppelin/mainnet-backup.json

Large diffs are not rendered by default.

587 changes: 107 additions & 480 deletions .openzeppelin/mainnet.json

Large diffs are not rendered by default.

194 changes: 0 additions & 194 deletions .openzeppelin/wildertoken-mainnet.json

This file was deleted.

17 changes: 17 additions & 0 deletions contracts/ZeroToken.sol
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ import "./oz/ERC20Upgradeable.sol";
import "./oz/ERC20SnapshotUpgradeable.sol";
import "./oz/ERC20PausableUpgradeable.sol";

import "@openzeppelin/contracts-upgradeable/token/ERC20/IERC20Upgradeable.sol";
import "@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol";
import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol";

contract ZeroToken is
Expand Down Expand Up @@ -196,6 +198,21 @@ contract ZeroToken is
return true;
}

/**
* Recovers tokens that may have been transferred to this contract in error.
* Transfers all of a specific ERC20 token from this contract to a given address.
* @param token The ERC20 token to target
* @param sendTo The address to send tokens to
*/
function recoverTokensFromContract(IERC20Upgradeable token, address sendTo)
external
onlyOwner
{
uint256 balance = token.balanceOf(address(this));
require(balance > 0, "no balance");
SafeERC20Upgradeable.safeTransfer(token, sendTo, balance);
}

function _beforeTokenTransfer(
address from,
address to,
Expand Down
5 changes: 5 additions & 0 deletions hardhat.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import { task, HardhatUserConfig } from "hardhat/config";
import "@nomiclabs/hardhat-waffle";
import "@nomiclabs/hardhat-etherscan";
import "@nomiclabs/hardhat-ethers";
import "@openzeppelin/hardhat-defender";
import "@typechain/hardhat";
import "@openzeppelin/hardhat-upgrades";
import "solidity-coverage";
Expand Down Expand Up @@ -83,5 +84,9 @@ const config: HardhatUserConfig = {
etherscan: {
apiKey: "FZ1ANB251FC8ISFDXFGFCUDCANSJNWPF9Q",
},
defender: {
apiKey: process.env.DEFENDER_TEAM_API_KEY || "",
apiSecret: process.env.DEFENDER_TEAM_API_SECRET || "",
},
};
export default config;
13 changes: 8 additions & 5 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
{
"devDependencies": {
"@ethersproject/abi": "5.5.0",
"@ethersproject/bignumber": "5.5.0",
"@ethersproject/bytes": "5.5.0",
"@ethersproject/providers": "5.5.0",
"@nomiclabs/hardhat-ethers": "2.0.2",
"@nomiclabs/hardhat-etherscan": "2.1.1",
"@nomiclabs/hardhat-waffle": "2.0.1",
"@ethersproject/bignumber": "5.5.0",
"@ethersproject/abi": "5.5.0",
"@ethersproject/providers": "5.5.0",
"@ethersproject/bytes": "5.5.0",
"@openzeppelin/contracts": "4.0.0",
"@openzeppelin/contracts-upgradeable": "4.0.0",
"@openzeppelin/hardhat-upgrades": "1.12.0",
Expand Down Expand Up @@ -59,5 +59,8 @@
},
"name": "zToken",
"version": "0.0.0",
"license": "MIT"
"license": "MIT",
"dependencies": {
"@openzeppelin/hardhat-defender": "^1.7.1"
}
}
12 changes: 12 additions & 0 deletions scripts/upgradeWILDToken.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import { ethers, defender } from "hardhat";

const main = async () => {
const proxy = "0x2a3bFF78B79A009976EeA096a51A948a3dC00e34";

const tokenContractFactory = await ethers.getContractFactory("ZeroToken");

const c = await defender.proposeUpgrade(proxy, tokenContractFactory);
console.log(c);
};

main();
Loading