Skip to content

Commit 1d45113

Browse files
authored
Add recipient constructor argument for premint (#435)
1 parent ac93b6c commit 1d45113

11 files changed

+39
-22
lines changed

packages/core/CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
# Changelog
22

3+
## 0.5.1 (2025-02-05)
4+
5+
- **Potentially breaking changes**:
6+
- Add constructor argument `recipient` when using `premint` in `erc20`, `stablecoin`, and `realWorldAsset`.
7+
38
## 0.5.0 (2025-01-23)
49

510
- Update to use TypeScript v5. ([#231](https://github.com/OpenZeppelin/contracts-wizard/pull/231))

packages/core/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@openzeppelin/wizard",
3-
"version": "0.5.0",
3+
"version": "0.5.1",
44
"description": "A boilerplate generator to get started with OpenZeppelin Contracts",
55
"license": "AGPL-3.0-only",
66
"repository": "https://github.com/OpenZeppelin/contracts-wizard",

packages/core/src/erc20.test.ts.md

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -210,8 +210,11 @@ Generated by [AVA](https://avajs.dev).
210210
import {ERC20Permit} from "@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol";␊
211211
212212
contract MyToken is ERC20, ERC20Permit {␊
213-
constructor() ERC20("MyToken", "MTK") ERC20Permit("MyToken") {␊
214-
_mint(msg.sender, 1000 * 10 ** decimals());␊
213+
constructor(address recipient)␊
214+
ERC20("MyToken", "MTK")␊
215+
ERC20Permit("MyToken")␊
216+
{␊
217+
_mint(recipient, 1000 * 10 ** decimals());␊
215218
}␊
216219
}␊
217220
`
@@ -463,7 +466,7 @@ Generated by [AVA](https://avajs.dev).
463466
_disableInitializers();␊
464467
}␊
465468
466-
function initialize(address defaultAdmin, address pauser, address minter)␊
469+
function initialize(address defaultAdmin, address pauser, address recipient, address minter)␊
467470
initializer public␊
468471
{␊
469472
__ERC20_init("MyToken", "MTK");␊
@@ -476,7 +479,7 @@ Generated by [AVA](https://avajs.dev).
476479
477480
_grantRole(DEFAULT_ADMIN_ROLE, defaultAdmin);␊
478481
_grantRole(PAUSER_ROLE, pauser);␊
479-
_mint(msg.sender, 2000 * 10 ** decimals());␊
482+
_mint(recipient, 2000 * 10 ** decimals());␊
480483
_grantRole(MINTER_ROLE, minter);␊
481484
}␊
482485
@@ -541,7 +544,7 @@ Generated by [AVA](https://avajs.dev).
541544
_disableInitializers();␊
542545
}␊
543546
544-
function initialize(address defaultAdmin, address pauser, address minter, address upgrader)␊
547+
function initialize(address defaultAdmin, address pauser, address recipient, address minter, address upgrader)␊
545548
initializer public␊
546549
{␊
547550
__ERC20_init("MyToken", "MTK");␊
@@ -555,7 +558,7 @@ Generated by [AVA](https://avajs.dev).
555558
556559
_grantRole(DEFAULT_ADMIN_ROLE, defaultAdmin);␊
557560
_grantRole(PAUSER_ROLE, pauser);␊
558-
_mint(msg.sender, 2000 * 10 ** decimals());␊
561+
_mint(recipient, 2000 * 10 ** decimals());␊
559562
_grantRole(MINTER_ROLE, minter);␊
560563
_grantRole(UPGRADER_ROLE, upgrader);␊
561564
}␊
@@ -623,7 +626,9 @@ Generated by [AVA](https://avajs.dev).
623626
_disableInitializers();␊
624627
}␊
625628
626-
function initialize(address initialAuthority) initializer public {␊
629+
function initialize(address initialAuthority, address recipient)␊
630+
initializer public␊
631+
{␊
627632
__ERC20_init("MyToken", "MTK");␊
628633
__ERC20Burnable_init();␊
629634
__ERC20Pausable_init();␊
@@ -633,7 +638,7 @@ Generated by [AVA](https://avajs.dev).
633638
__ERC20FlashMint_init();␊
634639
__UUPSUpgradeable_init();␊
635640
636-
_mint(msg.sender, 2000 * 10 ** decimals());␊
641+
_mint(recipient, 2000 * 10 ** decimals());␊
637642
}␊
638643
639644
function pause() public restricted {␊

packages/core/src/erc20.test.ts.snap

8 Bytes
Binary file not shown.

packages/core/src/erc20.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,8 @@ function addPremint(c: ContractBuilder, amount: string) {
153153
const zeroes = new Array(Math.max(0, -decimalPlace)).fill('0').join('');
154154
const units = integer + decimals + zeroes;
155155
const exp = decimalPlace <= 0 ? 'decimals()' : `(decimals() - ${decimalPlace})`;
156-
c.addConstructorCode(`_mint(msg.sender, ${units} * 10 ** ${exp});`);
156+
c.addConstructorArgument({type: 'address', name: 'recipient'});
157+
c.addConstructorCode(`_mint(recipient, ${units} * 10 ** ${exp});`);
157158
}
158159
}
159160
}

packages/core/src/stablecoin.test.ts.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -210,8 +210,11 @@ Generated by [AVA](https://avajs.dev).
210210
import {ERC20Permit} from "@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol";␊
211211
212212
contract MyStablecoin is ERC20, ERC20Permit {␊
213-
constructor() ERC20("MyStablecoin", "MST") ERC20Permit("MyStablecoin") {␊
214-
_mint(msg.sender, 1000 * 10 ** decimals());␊
213+
constructor(address recipient)␊
214+
ERC20("MyStablecoin", "MST")␊
215+
ERC20Permit("MyStablecoin")␊
216+
{␊
217+
_mint(recipient, 1000 * 10 ** decimals());␊
215218
}␊
216219
}␊
217220
`
1 Byte
Binary file not shown.

packages/core/src/zip-foundry.test.ts.md

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -110,8 +110,9 @@ Generated by [AVA](https://avajs.dev).
110110
vm.startBroadcast();␊
111111
address defaultAdmin = <Set defaultAdmin address here>;␊
112112
address pauser = <Set pauser address here>;␊
113+
address recipient = <Set recipient address here>;␊
113114
address minter = <Set minter address here>;␊
114-
MyToken instance = new MyToken(defaultAdmin, pauser, minter);␊
115+
MyToken instance = new MyToken(defaultAdmin, pauser, recipient, minter);␊
115116
console.log("Contract deployed to %s", address(instance));␊
116117
vm.stopBroadcast();␊
117118
*/␊
@@ -135,13 +136,13 @@ Generated by [AVA](https://avajs.dev).
135136
bytes32 public constant PAUSER_ROLE = keccak256("PAUSER_ROLE");␊
136137
bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE");␊
137138
138-
constructor(address defaultAdmin, address pauser, address minter)␊
139+
constructor(address defaultAdmin, address pauser, address recipient, address minter)␊
139140
ERC20("My Token", "MTK")␊
140141
ERC20Permit("My Token")␊
141142
{␊
142143
_grantRole(DEFAULT_ADMIN_ROLE, defaultAdmin);␊
143144
_grantRole(PAUSER_ROLE, pauser);␊
144-
_mint(msg.sender, 2000 * 10 ** decimals());␊
145+
_mint(recipient, 2000 * 10 ** decimals());␊
145146
_grantRole(MINTER_ROLE, minter);␊
146147
}␊
147148
@@ -188,8 +189,9 @@ Generated by [AVA](https://avajs.dev).
188189
function setUp() public {␊
189190
address defaultAdmin = vm.addr(1);␊
190191
address pauser = vm.addr(2);␊
191-
address minter = vm.addr(3);␊
192-
instance = new MyToken(defaultAdmin, pauser, minter);␊
192+
address recipient = vm.addr(3);␊
193+
address minter = vm.addr(4);␊
194+
instance = new MyToken(defaultAdmin, pauser, recipient, minter);␊
193195
}␊
194196
195197
function testName() public view {␊
24 Bytes
Binary file not shown.

packages/core/src/zip-hardhat.test.ts.md

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,13 @@ Generated by [AVA](https://avajs.dev).
2626
bytes32 public constant PAUSER_ROLE = keccak256("PAUSER_ROLE");␊
2727
bytes32 public constant MINTER_ROLE = keccak256("MINTER_ROLE");␊
2828
29-
constructor(address defaultAdmin, address pauser, address minter)␊
29+
constructor(address defaultAdmin, address pauser, address recipient, address minter)␊
3030
ERC20("My Token", "MTK")␊
3131
ERC20Permit("My Token")␊
3232
{␊
3333
_grantRole(DEFAULT_ADMIN_ROLE, defaultAdmin);␊
3434
_grantRole(PAUSER_ROLE, pauser);␊
35-
_mint(msg.sender, 2000 * 10 ** decimals());␊
35+
_mint(recipient, 2000 * 10 ** decimals());␊
3636
_grantRole(MINTER_ROLE, minter);␊
3737
}␊
3838
@@ -106,7 +106,7 @@ Generated by [AVA](https://avajs.dev).
106106
const ContractFactory = await ethers.getContractFactory("MyToken");␊
107107
108108
// TODO: Set addresses for the contract arguments below␊
109-
const instance = await ContractFactory.deploy(defaultAdmin, pauser, minter);␊
109+
const instance = await ContractFactory.deploy(defaultAdmin, pauser, recipient, minter);␊
110110
await instance.waitForDeployment();␊
111111
112112
console.log(\`Contract deployed to ${await instance.getAddress()}\`);␊
@@ -128,9 +128,10 @@ Generated by [AVA](https://avajs.dev).
128128
129129
const defaultAdmin = (await ethers.getSigners())[0].address;␊
130130
const pauser = (await ethers.getSigners())[1].address;␊
131-
const minter = (await ethers.getSigners())[2].address;␊
131+
const recipient = (await ethers.getSigners())[2].address;␊
132+
const minter = (await ethers.getSigners())[3].address;␊
132133
133-
const instance = await ContractFactory.deploy(defaultAdmin, pauser, minter);␊
134+
const instance = await ContractFactory.deploy(defaultAdmin, pauser, recipient, minter);␊
134135
await instance.waitForDeployment();␊
135136
136137
expect(await instance.name()).to.equal("My Token");␊

0 commit comments

Comments
 (0)