feat: migrate deployment to Hardhat Ignition
Replace the imperative deploy scripts with Hardhat Ignition modules:
- ignition/modules/{MockToken,Reputation,P2PIX}.ts orchestrate the full
deployment graph; P2PIX.ts wires MockToken + Reputation and deploys
P2PIX via its constructor
- ignition/parameters/localhost.json holds per-network values
(defaultBlocks, validSigners, MockToken supply)
- swap hardhat-toolbox for the individual plugins that Ignition needs;
add hardhat-verify (v2) and bump hardhat/hardhat-tracer accordingly
- delete scripts/1-deploy-mockToken.ts and scripts/2-deploy-p2pix.ts
- add deploy:{localhost,goerli,sepolia,mumbai} npm scripts
- include ignition/**/* in tsconfig.json
- gitignore ignition/deployments/chain-31337/ (ephemeral local state)
This branch carries the deployment-tooling migration only — the contract
is still the original constructor-based P2PIX. Proxy / UUPS deploy
support will land alongside the upgradeable contract change.
This commit is contained in:
14
ignition/modules/MockToken.ts
Normal file
14
ignition/modules/MockToken.ts
Normal file
@@ -0,0 +1,14 @@
|
||||
import { buildModule } from "@nomicfoundation/hardhat-ignition/modules";
|
||||
import { ethers } from "ethers";
|
||||
|
||||
const DEFAULT_SUPPLY = ethers.utils
|
||||
.parseEther("20000000")
|
||||
.toString();
|
||||
|
||||
export default buildModule("MockToken", m => {
|
||||
const supply = m.getParameter("supply", DEFAULT_SUPPLY);
|
||||
|
||||
const token = m.contract("MockToken", [supply]);
|
||||
|
||||
return { token };
|
||||
});
|
||||
32
ignition/modules/P2PIX.ts
Normal file
32
ignition/modules/P2PIX.ts
Normal file
@@ -0,0 +1,32 @@
|
||||
import { buildModule } from "@nomicfoundation/hardhat-ignition/modules";
|
||||
|
||||
import MockTokenModule from "./MockToken";
|
||||
import ReputationModule from "./Reputation";
|
||||
|
||||
export default buildModule("P2PIX", m => {
|
||||
const { token } = m.useModule(MockTokenModule);
|
||||
const { reputation, multicall } = m.useModule(
|
||||
ReputationModule,
|
||||
);
|
||||
|
||||
const defaultBlocks = m.getParameter("defaultBlocks", 10);
|
||||
const validSigners = m.getParameter<string[]>(
|
||||
"validSigners",
|
||||
[],
|
||||
);
|
||||
|
||||
const p2pix = m.contract("P2PIX", [
|
||||
defaultBlocks,
|
||||
validSigners,
|
||||
reputation,
|
||||
[token],
|
||||
[true],
|
||||
]);
|
||||
|
||||
return {
|
||||
p2pix,
|
||||
reputation,
|
||||
multicall,
|
||||
token,
|
||||
};
|
||||
});
|
||||
8
ignition/modules/Reputation.ts
Normal file
8
ignition/modules/Reputation.ts
Normal file
@@ -0,0 +1,8 @@
|
||||
import { buildModule } from "@nomicfoundation/hardhat-ignition/modules";
|
||||
|
||||
export default buildModule("Reputation", m => {
|
||||
const reputation = m.contract("Reputation", []);
|
||||
const multicall = m.contract("Multicall", []);
|
||||
|
||||
return { reputation, multicall };
|
||||
});
|
||||
9
ignition/parameters/localhost.json
Normal file
9
ignition/parameters/localhost.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"P2PIX": {
|
||||
"defaultBlocks": 10,
|
||||
"validSigners": []
|
||||
},
|
||||
"MockToken": {
|
||||
"supply": "20000000000000000000000000"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user