Skip to content

Commit

Permalink
Add recipient constructor argument for premint (#435)
Browse files Browse the repository at this point in the history
  • Loading branch information
ericglau authored Feb 5, 2025
1 parent ac93b6c commit 1d45113
Show file tree
Hide file tree
Showing 11 changed files with 39 additions and 22 deletions.
5 changes: 5 additions & 0 deletions packages/core/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
# Changelog

## 0.5.1 (2025-02-05)

- **Potentially breaking changes**:
- Add constructor argument `recipient` when using `premint` in `erc20`, `stablecoin`, and `realWorldAsset`.

## 0.5.0 (2025-01-23)

- Update to use TypeScript v5. ([#231](https://github.com/OpenZeppelin/contracts-wizard/pull/231))
Expand Down
2 changes: 1 addition & 1 deletion packages/core/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@openzeppelin/wizard",
"version": "0.5.0",
"version": "0.5.1",
"description": "A boilerplate generator to get started with OpenZeppelin Contracts",
"license": "AGPL-3.0-only",
"repository": "https://github.com/OpenZeppelin/contracts-wizard",
Expand Down
21 changes: 13 additions & 8 deletions packages/core/src/erc20.test.ts.md
Original file line number Diff line number Diff line change
Expand Up @@ -210,8 +210,11 @@ Generated by [AVA](https://avajs.dev).
import {ERC20Permit} from "@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol";␊
contract MyToken is ERC20, ERC20Permit {␊
constructor() ERC20("MyToken", "MTK") ERC20Permit("MyToken") {␊
_mint(msg.sender, 1000 * 10 ** decimals());␊
constructor(address recipient)␊
ERC20("MyToken", "MTK")␊
ERC20Permit("MyToken")␊
{␊
_mint(recipient, 1000 * 10 ** decimals());␊
}␊
}␊
`
Expand Down Expand Up @@ -463,7 +466,7 @@ Generated by [AVA](https://avajs.dev).
_disableInitializers();␊
}␊
function initialize(address defaultAdmin, address pauser, address minter)␊
function initialize(address defaultAdmin, address pauser, address recipient, address minter)␊
initializer public␊
{␊
__ERC20_init("MyToken", "MTK");␊
Expand All @@ -476,7 +479,7 @@ Generated by [AVA](https://avajs.dev).
_grantRole(DEFAULT_ADMIN_ROLE, defaultAdmin);␊
_grantRole(PAUSER_ROLE, pauser);␊
_mint(msg.sender, 2000 * 10 ** decimals());␊
_mint(recipient, 2000 * 10 ** decimals());␊
_grantRole(MINTER_ROLE, minter);␊
}␊
Expand Down Expand Up @@ -541,7 +544,7 @@ Generated by [AVA](https://avajs.dev).
_disableInitializers();␊
}␊
function initialize(address defaultAdmin, address pauser, address minter, address upgrader)␊
function initialize(address defaultAdmin, address pauser, address recipient, address minter, address upgrader)␊
initializer public␊
{␊
__ERC20_init("MyToken", "MTK");␊
Expand All @@ -555,7 +558,7 @@ Generated by [AVA](https://avajs.dev).
_grantRole(DEFAULT_ADMIN_ROLE, defaultAdmin);␊
_grantRole(PAUSER_ROLE, pauser);␊
_mint(msg.sender, 2000 * 10 ** decimals());␊
_mint(recipient, 2000 * 10 ** decimals());␊
_grantRole(MINTER_ROLE, minter);␊
_grantRole(UPGRADER_ROLE, upgrader);␊
}␊
Expand Down Expand Up @@ -623,7 +626,9 @@ Generated by [AVA](https://avajs.dev).
_disableInitializers();␊
}␊
function initialize(address initialAuthority) initializer public {␊
function initialize(address initialAuthority, address recipient)␊
initializer public␊
{␊
__ERC20_init("MyToken", "MTK");␊
__ERC20Burnable_init();␊
__ERC20Pausable_init();␊
Expand All @@ -633,7 +638,7 @@ Generated by [AVA](https://avajs.dev).
__ERC20FlashMint_init();␊
__UUPSUpgradeable_init();␊
_mint(msg.sender, 2000 * 10 ** decimals());␊
_mint(recipient, 2000 * 10 ** decimals());␊
}␊
function pause() public restricted {␊
Expand Down
Binary file modified packages/core/src/erc20.test.ts.snap
Binary file not shown.
3 changes: 2 additions & 1 deletion packages/core/src/erc20.ts
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,8 @@ function addPremint(c: ContractBuilder, amount: string) {
const zeroes = new Array(Math.max(0, -decimalPlace)).fill('0').join('');
const units = integer + decimals + zeroes;
const exp = decimalPlace <= 0 ? 'decimals()' : `(decimals() - ${decimalPlace})`;
c.addConstructorCode(`_mint(msg.sender, ${units} * 10 ** ${exp});`);
c.addConstructorArgument({type: 'address', name: 'recipient'});
c.addConstructorCode(`_mint(recipient, ${units} * 10 ** ${exp});`);
}
}
}
Expand Down
7 changes: 5 additions & 2 deletions packages/core/src/stablecoin.test.ts.md
Original file line number Diff line number Diff line change
Expand Up @@ -210,8 +210,11 @@ Generated by [AVA](https://avajs.dev).
import {ERC20Permit} from "@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol";␊
contract MyStablecoin is ERC20, ERC20Permit {␊
constructor() ERC20("MyStablecoin", "MST") ERC20Permit("MyStablecoin") {␊
_mint(msg.sender, 1000 * 10 ** decimals());␊
constructor(address recipient)␊
ERC20("MyStablecoin", "MST")␊
ERC20Permit("MyStablecoin")␊
{␊
_mint(recipient, 1000 * 10 ** decimals());␊
}␊
}␊
`
Expand Down
Binary file modified packages/core/src/stablecoin.test.ts.snap
Binary file not shown.
12 changes: 7 additions & 5 deletions packages/core/src/zip-foundry.test.ts.md
Original file line number Diff line number Diff line change
Expand Up @@ -110,8 +110,9 @@ Generated by [AVA](https://avajs.dev).
vm.startBroadcast();␊
address defaultAdmin = <Set defaultAdmin address here>;␊
address pauser = <Set pauser address here>;␊
address recipient = <Set recipient address here>;␊
address minter = <Set minter address here>;␊
MyToken instance = new MyToken(defaultAdmin, pauser, minter);␊
MyToken instance = new MyToken(defaultAdmin, pauser, recipient, minter);␊
console.log("Contract deployed to %s", address(instance));␊
vm.stopBroadcast();␊
*/␊
Expand All @@ -135,13 +136,13 @@ Generated by [AVA](https://avajs.dev).
bytes32 public constant PAUSER_ROLE = keccak256("PAUSER_ROLE");␊
bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE");␊
constructor(address defaultAdmin, address pauser, address minter)␊
constructor(address defaultAdmin, address pauser, address recipient, address minter)␊
ERC20("My Token", "MTK")␊
ERC20Permit("My Token")␊
{␊
_grantRole(DEFAULT_ADMIN_ROLE, defaultAdmin);␊
_grantRole(PAUSER_ROLE, pauser);␊
_mint(msg.sender, 2000 * 10 ** decimals());␊
_mint(recipient, 2000 * 10 ** decimals());␊
_grantRole(MINTER_ROLE, minter);␊
}␊
Expand Down Expand Up @@ -188,8 +189,9 @@ Generated by [AVA](https://avajs.dev).
function setUp() public {␊
address defaultAdmin = vm.addr(1);␊
address pauser = vm.addr(2);␊
address minter = vm.addr(3);␊
instance = new MyToken(defaultAdmin, pauser, minter);␊
address recipient = vm.addr(3);␊
address minter = vm.addr(4);␊
instance = new MyToken(defaultAdmin, pauser, recipient, minter);␊
}␊
function testName() public view {␊
Expand Down
Binary file modified packages/core/src/zip-foundry.test.ts.snap
Binary file not shown.
11 changes: 6 additions & 5 deletions packages/core/src/zip-hardhat.test.ts.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,13 +26,13 @@ Generated by [AVA](https://avajs.dev).
bytes32 public constant PAUSER_ROLE = keccak256("PAUSER_ROLE");␊
bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE");␊
constructor(address defaultAdmin, address pauser, address minter)␊
constructor(address defaultAdmin, address pauser, address recipient, address minter)␊
ERC20("My Token", "MTK")␊
ERC20Permit("My Token")␊
{␊
_grantRole(DEFAULT_ADMIN_ROLE, defaultAdmin);␊
_grantRole(PAUSER_ROLE, pauser);␊
_mint(msg.sender, 2000 * 10 ** decimals());␊
_mint(recipient, 2000 * 10 ** decimals());␊
_grantRole(MINTER_ROLE, minter);␊
}␊
Expand Down Expand Up @@ -106,7 +106,7 @@ Generated by [AVA](https://avajs.dev).
const ContractFactory = await ethers.getContractFactory("MyToken");␊
// TODO: Set addresses for the contract arguments below␊
const instance = await ContractFactory.deploy(defaultAdmin, pauser, minter);␊
const instance = await ContractFactory.deploy(defaultAdmin, pauser, recipient, minter);␊
await instance.waitForDeployment();␊
console.log(\`Contract deployed to ${await instance.getAddress()}\`);␊
Expand All @@ -128,9 +128,10 @@ Generated by [AVA](https://avajs.dev).
const defaultAdmin = (await ethers.getSigners())[0].address;␊
const pauser = (await ethers.getSigners())[1].address;␊
const minter = (await ethers.getSigners())[2].address;␊
const recipient = (await ethers.getSigners())[2].address;␊
const minter = (await ethers.getSigners())[3].address;␊
const instance = await ContractFactory.deploy(defaultAdmin, pauser, minter);␊
const instance = await ContractFactory.deploy(defaultAdmin, pauser, recipient, minter);␊
await instance.waitForDeployment();␊
expect(await instance.name()).to.equal("My Token");␊
Expand Down
Binary file modified packages/core/src/zip-hardhat.test.ts.snap
Binary file not shown.

0 comments on commit 1d45113

Please sign in to comment.