-
Notifications
You must be signed in to change notification settings - Fork 0
/
deploy.js
79 lines (65 loc) · 2.42 KB
/
deploy.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
const hre = require("hardhat");
const ethers = hre.ethers;
async function main() {
const [deployer] = await ethers.getSigners();
// Deploy DiamondCutFacet
const DiamondCutFacet = await hre.ethers.getContractFactory("DiamondCutFacet");
const diamondCutFacet = await DiamondCutFacet.deploy();
await diamondCutFacet.deployed();
// Deploy DiamondLoupeFacet
const DiamondLoupeFacet = await hre.ethers.getContractFactory("DiamondLoupeFacet");
const diamondLoupeFacet = await DiamondLoupeFacet.deploy();
await diamondLoupeFacet.deployed();
// Deploy CreatorToken
const CreatorToken = await hre.ethers.getContractFactory("CreatorToken");
const creatorToken = await CreatorToken.deploy();
await creatorToken.deployed();
// Deploy Royalties
const Royalties = await hre.ethers.getContractFactory("Royalties");
const royalties = await Royalties.deploy();
await royalties.deployed();
// Deploy Diamond
const Diamond = await hre.ethers.getContractFactory("Diamond");
const diamond = await Diamond.deploy();
await diamond.deployed();
// Initialize diamond with DiamondCutFacet and DiamondLoupeFacet
await diamond.initialize([
diamondCutFacet.address,
diamondLoupeFacet.address,
]);
// Add CreatorToken and Royalties facets using diamondCut function
const addCreatorTokenFacet = [
{
action: 0, // 0 for adding facet
facetAddress: creatorToken.address,
functionSelectors: await creatorToken.getSelectors(),
},
];
const addRoyaltiesFacet = [
{
action: 0, // 0 for adding facet
facetAddress: royalties.address,
functionSelectors: await royalties.getSelectors(),
},
];
await diamond.diamondCut(
addCreatorTokenFacet.concat(addRoyaltiesFacet),
deployer.address,
"0x"
);
// Verify facets and functions using loupe functions
const allFacets = await diamond.facets();
console.log("All facets:", allFacets);
console.log("Diamond deployed to:", diamond.address);
console.log("DiamondCutFacet deployed to:", diamondCutFacet.address);
console.log("DiamondLoupeFacet deployed to:", diamondLoupeFacet.address);
console.log("CreatorToken deployed to:", creatorToken.address);
console.log("Royalties deployed to:", royalties.address);
}
main()
.then(() => process.exit(0))
.catch((error) => {
console.error(error);
process.exit(1);
});
// Run using following line in terminal ==> npx hardhat run deploySteeloToken.js --network mumbai