Hi @kypanz,
I’m sorry that you are having issues.
The OpenZeppelin CLI used to be only for creating upgradeable contracts. (OpenZeppelin CLI now in 2.8 Release Candidate supports deploying non-upgradeable contracts)
To create an upgradeable version of the SimpleToken we need to use an initializer rather than a constructor. (see Writing Upgradeable Contracts)
I previously gave you an example of a non-upgradeable (regular) version of the SimpleToken.
In our project we link OpenZeppelin Contracts Ethereum Package and install @openzeppelin/upgrades
openzeppelin link @openzeppelin/contracts-ethereum-package
npm install @openzeppelin/upgrades
SimpleToken.sol
Upgradeable SimpleToken
pragma solidity ^0.5.0;
import "@openzeppelin/upgrades/contracts/Initializable.sol";
import "@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/ERC20.sol";
import "@openzeppelin/contracts-ethereum-package/contracts/token/ERC20/ERC20Detailed.sol";
/**
* @title SimpleToken
* @dev Very simple ERC20 Token example, where all tokens are pre-assigned to the sender.
* Note they can later distribute these tokens as they wish using `transfer` and other
* `ERC20` functions.
*/
contract SimpleToken is Initializable, ERC20, ERC20Detailed {
/**
* @dev initialize that gives msg.sender all of existing tokens.
*/
function initialize(address sender) public initializer {
ERC20Detailed.initialize("Token", "TKN", 18);
_mint(sender, 1000000 * (10 ** uint256(decimals())));
}
}
Create SimpleToken
Get an account to mint the tokens to.
$ oz accounts
? Pick a network development
Accounts for dev-1573097445291:
Default: 0x90F8bf6A479f320ead074411a4B0e7944Ea8c9C1
All:
- 0: 0x90F8bf6A479f320ead074411a4B0e7944Ea8c9C1
Create the contract, call initialize with the account to hold the tokens.
$ oz create
✓ Compiled contracts with solc 0.5.12 (commit.7709ece9)
? Pick a contract to instantiate SimpleToken
? Pick a network development
All contracts are up to date
? Do you want to call a function on the instance after creating it? Yes
? Select which function * initialize(sender: address)
? sender (address): 0x90F8bf6A479f320ead074411a4B0e7944Ea8c9C1
✓ Instance created at 0xCeeFD27e0542aFA926B87d23936c79c276A48277
0xCeeFD27e0542aFA926B87d23936c79c276A48277
Interact
$ oz call
? Pick a network development
? Pick an instance SimpleToken at 0xCeeFD27e0542aFA926B87d23936c79c276A48277
? Select which function name()
✓ Method 'name()' returned: Token
Token