generated from dl-solarity/hardhat-template
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #2 from rarimo/feature/update_deployment
Update deploy scripts
- Loading branch information
Showing
11 changed files
with
1,753 additions
and
2,758 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,60 +1,18 @@ | ||
import { Deployer } from "@solarity/hardhat-migrate"; | ||
import { artifacts } from "hardhat"; | ||
import { ethers } from "hardhat"; | ||
import { deployPoseidons } from "@/deploy/helpers/deploy_helper"; | ||
import { Config, parseConfig, isZeroAddr } from "@/deploy/helpers/config_parser"; | ||
|
||
const PoseidonUnit1L = artifacts.require("PoseidonUnit1L"); | ||
const PoseidonUnit2L = artifacts.require("PoseidonUnit2L"); | ||
const PoseidonUnit3L = artifacts.require("PoseidonUnit3L"); | ||
const PoseidonUnit4L = artifacts.require("PoseidonUnit4L"); | ||
const PoseidonUnit5L = artifacts.require("PoseidonUnit5L"); | ||
const PoseidonUnit6L = artifacts.require("PoseidonUnit6L"); | ||
|
||
const SpongePoseidon = artifacts.require("SpongePoseidon"); | ||
const PoseidonFacade = artifacts.require("PoseidonFacade"); | ||
import { PoseidonFacade__factory, SpongePoseidon__factory } from "@/generated-types/ethers"; | ||
|
||
export = async (deployer: Deployer) => { | ||
const config: Config = parseConfig(); | ||
|
||
if (isZeroAddr(config.poseidonFacade)) { | ||
const poseidonContracts = await deployPoseidons( | ||
( | ||
await ethers.getSigners() | ||
)[0], | ||
new Array(6).fill(6).map((_, i) => i + 1) | ||
); | ||
|
||
const poseidonUnit1L = await PoseidonUnit1L.at(poseidonContracts[0].address); | ||
const poseidonUnit2L = await PoseidonUnit2L.at(poseidonContracts[1].address); | ||
const poseidonUnit3L = await PoseidonUnit3L.at(poseidonContracts[2].address); | ||
const poseidonUnit4L = await PoseidonUnit4L.at(poseidonContracts[3].address); | ||
const poseidonUnit5L = await PoseidonUnit5L.at(poseidonContracts[4].address); | ||
const poseidonUnit6L = await PoseidonUnit6L.at(poseidonContracts[5].address); | ||
|
||
await PoseidonUnit1L.setAsDeployed(poseidonUnit1L); | ||
await PoseidonUnit2L.setAsDeployed(poseidonUnit2L); | ||
await PoseidonUnit3L.setAsDeployed(poseidonUnit3L); | ||
await PoseidonUnit4L.setAsDeployed(poseidonUnit4L); | ||
await PoseidonUnit5L.setAsDeployed(poseidonUnit5L); | ||
await PoseidonUnit6L.setAsDeployed(poseidonUnit6L); | ||
|
||
await deployer.link(poseidonUnit6L, SpongePoseidon); | ||
|
||
await deployer.deploy(SpongePoseidon); | ||
|
||
await deployer.link(poseidonUnit1L, PoseidonFacade); | ||
await deployer.link(poseidonUnit2L, PoseidonFacade); | ||
await deployer.link(poseidonUnit3L, PoseidonFacade); | ||
await deployer.link(poseidonUnit4L, PoseidonFacade); | ||
await deployer.link(poseidonUnit5L, PoseidonFacade); | ||
await deployer.link(poseidonUnit6L, PoseidonFacade); | ||
await deployer.link(SpongePoseidon, PoseidonFacade); | ||
await deployPoseidons(deployer, [1, 2, 3, 4, 5, 6]); | ||
|
||
await deployer.deploy(PoseidonFacade); | ||
} else { | ||
const poseidonFacade = await PoseidonFacade.at(config.poseidonFacade); | ||
await deployer.deploy(SpongePoseidon__factory); | ||
|
||
await PoseidonFacade.setAsDeployed(poseidonFacade); | ||
await deployer.deploy(PoseidonFacade__factory); | ||
} else if (config.poseidonFacade) { | ||
await deployer.save(PoseidonFacade__factory, config.poseidonFacade); | ||
} | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,36 +1,36 @@ | ||
import { Deployer, Logger } from "@solarity/hardhat-migrate"; | ||
import { artifacts } from "hardhat"; | ||
import { Deployer } from "@solarity/hardhat-migrate"; | ||
import { Config, parseConfig, isZeroAddr } from "@/deploy/helpers/config_parser"; | ||
import { ERC1967Proxy__factory, LightweightStateV2, LightweightStateV2__factory } from "@/generated-types/ethers"; | ||
|
||
const ERC1967Proxy = artifacts.require("ERC1967Proxy"); | ||
const LightweightStateV2 = artifacts.require("LightweightStateV2"); | ||
|
||
export = async (deployer: Deployer, logger: Logger) => { | ||
export = async (deployer: Deployer) => { | ||
const config: Config = parseConfig(); | ||
|
||
let lightweightStateV2; | ||
let lightweightStateV2: LightweightStateV2; | ||
|
||
if (isZeroAddr(config.stateContractInfo.stateAddr)) { | ||
const lightweightStateV2Impl = await deployer.deploy(LightweightStateV2); | ||
const lightweightStateV2Proxy = await deployer.deploy(ERC1967Proxy, lightweightStateV2Impl.address, []); | ||
const lightweightStateV2Impl = await deployer.deploy(LightweightStateV2__factory, { | ||
name: "LightweightStateV2Impl", | ||
}); | ||
const lightweightStateV2Proxy = await deployer.deploy( | ||
ERC1967Proxy__factory, | ||
[lightweightStateV2Impl.address, "0x"], | ||
{ name: "LightweightStateV2Proxy" } | ||
); | ||
|
||
lightweightStateV2 = await LightweightStateV2.at(lightweightStateV2Proxy.address); | ||
lightweightStateV2 = await deployer.deployed(LightweightStateV2__factory, lightweightStateV2Proxy.address); | ||
|
||
if (config.stateContractInfo.stateInitParams) { | ||
logger.logTransaction( | ||
await lightweightStateV2.__LightweightStateV2_init( | ||
config.stateContractInfo.stateInitParams.signer, | ||
config.stateContractInfo.stateInitParams.sourceStateContract, | ||
config.stateContractInfo.stateInitParams.chainName | ||
), | ||
"Initialize LightweightStateV2 contract" | ||
await lightweightStateV2.__LightweightStateV2_init( | ||
config.stateContractInfo.stateInitParams.signer, | ||
config.stateContractInfo.stateInitParams.sourceStateContract, | ||
config.stateContractInfo.stateInitParams.chainName | ||
); | ||
} else { | ||
throw new Error("Invalid state init params"); | ||
} | ||
} else { | ||
lightweightStateV2 = await LightweightStateV2.at(config.stateContractInfo.stateAddr); | ||
lightweightStateV2 = await deployer.deployed(LightweightStateV2__factory, config.stateContractInfo.stateAddr); | ||
} | ||
|
||
await LightweightStateV2.setAsDeployed(lightweightStateV2); | ||
await deployer.save(LightweightStateV2__factory, lightweightStateV2.address); | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,39 +1,33 @@ | ||
import { Deployer, Logger } from "@solarity/hardhat-migrate"; | ||
import { artifacts } from "hardhat"; | ||
import { Deployer } from "@solarity/hardhat-migrate"; | ||
import { Config, parseConfig, isZeroAddr } from "@/deploy/helpers/config_parser"; | ||
import { deployMTPValidatorOnChain, deploySigValidatorOnChain } from "@/deploy/helpers/deploy_helper"; | ||
import { | ||
CredentialAtomicQueryMTPValidator__factory, | ||
CredentialAtomicQuerySigValidator__factory, | ||
} from "@/generated-types/ethers"; | ||
|
||
const PoseidonFacade = artifacts.require("PoseidonFacade"); | ||
const LightweightStateV2 = artifacts.require("LightweightStateV2"); | ||
|
||
const CredentialAtomicQuerySigValidator = artifacts.require("CredentialAtomicQuerySigValidator"); | ||
const CredentialAtomicQueryMTPValidator = artifacts.require("CredentialAtomicQueryMTPValidator"); | ||
|
||
export = async (deployer: Deployer, logger: Logger) => { | ||
export = async (deployer: Deployer) => { | ||
const config: Config = parseConfig(); | ||
|
||
let queryValidatorAddr; | ||
let queryValidatorAddr: string; | ||
|
||
if (isZeroAddr(config.validatorContractInfo.validatorAddr)) { | ||
const poseidonFacade = await PoseidonFacade.deployed(); | ||
const stateAddr = (await LightweightStateV2.deployed()).address; | ||
|
||
if (config.validatorContractInfo.isSigValidator) { | ||
queryValidatorAddr = await deploySigValidatorOnChain(deployer, logger, stateAddr); | ||
queryValidatorAddr = await deploySigValidatorOnChain(deployer); | ||
} else { | ||
queryValidatorAddr = await deployMTPValidatorOnChain(deployer, logger, stateAddr); | ||
queryValidatorAddr = await deployMTPValidatorOnChain(deployer); | ||
} | ||
} else { | ||
if (!config.validatorContractInfo.validatorAddr) { | ||
throw new Error(`Invalid validator address - ${config.validatorContractInfo.validatorAddr}`); | ||
} | ||
|
||
queryValidatorAddr = config.validatorContractInfo.validatorAddr; | ||
} | ||
|
||
if (config.validatorContractInfo.isSigValidator) { | ||
const querySigValidator = await CredentialAtomicQuerySigValidator.at(queryValidatorAddr); | ||
|
||
await CredentialAtomicQuerySigValidator.setAsDeployed(querySigValidator); | ||
await deployer.save(CredentialAtomicQuerySigValidator__factory, queryValidatorAddr); | ||
} else { | ||
const queryMTPValidator = await CredentialAtomicQueryMTPValidator.at(queryValidatorAddr); | ||
|
||
await CredentialAtomicQueryMTPValidator.setAsDeployed(queryMTPValidator); | ||
await deployer.save(CredentialAtomicQueryMTPValidator__factory, queryValidatorAddr); | ||
} | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,54 +1,62 @@ | ||
import { Deployer, Logger } from "@solarity/hardhat-migrate"; | ||
import { artifacts } from "hardhat"; | ||
|
||
import { Deployer, Reporter } from "@solarity/hardhat-migrate"; | ||
import { Config, parseConfig } from "@/deploy/helpers/config_parser"; | ||
|
||
const VerifiedSBT = artifacts.require("VerifiedSBT"); | ||
const QueryVerifier = artifacts.require("QueryVerifier"); | ||
const PoseidonFacade = artifacts.require("PoseidonFacade"); | ||
const LightweightStateV2 = artifacts.require("LightweightStateV2"); | ||
const ERC1967Proxy = artifacts.require("ERC1967Proxy"); | ||
|
||
const CredentialAtomicQuerySigValidator = artifacts.require("CredentialAtomicQuerySigValidator"); | ||
const CredentialAtomicQueryMTPValidator = artifacts.require("CredentialAtomicQueryMTPValidator"); | ||
|
||
export = async (deployer: Deployer, logger: Logger) => { | ||
import { | ||
CredentialAtomicQueryMTPValidator__factory, | ||
CredentialAtomicQuerySigValidator__factory, | ||
ERC1967Proxy__factory, | ||
LightweightStateV2__factory, | ||
PoseidonFacade__factory, | ||
QueryVerifier__factory, | ||
VerifiedSBT__factory, | ||
} from "@/generated-types/ethers"; | ||
|
||
export = async (deployer: Deployer) => { | ||
const config: Config = parseConfig(); | ||
|
||
const poseidonFacade = await PoseidonFacade.deployed(); | ||
await deployer.link(poseidonFacade, QueryVerifier); | ||
const verifiedSBTImpl = await deployer.deploy(VerifiedSBT__factory, { name: "VerifiedSBTImpl" }); | ||
const verifiedSBTProxy = await deployer.deploy(ERC1967Proxy__factory, [verifiedSBTImpl.address, "0x"], { | ||
name: "VerifiedSBTProxy", | ||
}); | ||
|
||
const verifiedSBTImpl = await deployer.deploy(VerifiedSBT); | ||
const verifiedSBTProxy = await deployer.deploy(ERC1967Proxy, verifiedSBTImpl.address, []); | ||
const verifiedSBT = await deployer.deployed(VerifiedSBT__factory, verifiedSBTProxy.address); | ||
|
||
const verifiedSBT = await VerifiedSBT.at(verifiedSBTProxy.address); | ||
await VerifiedSBT.setAsDeployed(verifiedSBT); | ||
await deployer.save(VerifiedSBT__factory, verifiedSBTProxy.address); | ||
|
||
const queryVerifier = await deployer.deploy(QueryVerifier); | ||
const queryVerifier = await deployer.deploy(QueryVerifier__factory); | ||
|
||
logger.logTransaction( | ||
await queryVerifier.setSBTContract(verifiedSBT.address), | ||
"Set VerifiedSBT contract address in the QueryVerifier contract" | ||
await queryVerifier.setSBTContract(verifiedSBT.address); | ||
await verifiedSBT.__VerifiedSBT_init( | ||
queryVerifier.address, | ||
config.verifiedSBTInfo.name, | ||
config.verifiedSBTInfo.symbol, | ||
config.verifiedSBTInfo.tokenURI | ||
); | ||
|
||
logger.logTransaction( | ||
await verifiedSBT.__VerifiedSBT_init(queryVerifier.address, "Polygon ID × Rarimo", "PRA", ""), | ||
"Initialize VerifiedSBT contract" | ||
); | ||
console.log(`Initialize VerifiedSBT contract with next params: | ||
NAME: ${config.verifiedSBTInfo.name} | ||
SYMBOL: ${config.verifiedSBTInfo.symbol} | ||
TOKEN_URI: ${config.verifiedSBTInfo.tokenURI} | ||
`); | ||
|
||
let validatorsInfo; | ||
let validatorsInfo: [string, string]; | ||
|
||
if (config.validatorContractInfo.isSigValidator) { | ||
validatorsInfo = ["QuerySigValidatorOnChain", (await CredentialAtomicQuerySigValidator.deployed()).address]; | ||
validatorsInfo = [ | ||
"QuerySigValidatorOnChain", | ||
(await deployer.deployed(CredentialAtomicQuerySigValidator__factory)).address, | ||
]; | ||
} else { | ||
validatorsInfo = ["QueryMTPValidatorOnChain", (await CredentialAtomicQueryMTPValidator.deployed()).address]; | ||
validatorsInfo = [ | ||
"QueryMTPValidatorOnChain", | ||
(await deployer.deployed(CredentialAtomicQueryMTPValidator__factory)).address, | ||
]; | ||
} | ||
|
||
logger.logContracts( | ||
["LightweightStateV2", (await LightweightStateV2.deployed()).address], | ||
Reporter.reportContracts( | ||
["LightweightStateV2", (await deployer.deployed(LightweightStateV2__factory)).address], | ||
validatorsInfo, | ||
["VerifiedSBT", verifiedSBT.address], | ||
["QueryVerifier", queryVerifier.address], | ||
["PoseidonFacade", poseidonFacade.address] | ||
["PoseidonFacade", (await deployer.deployed(PoseidonFacade__factory)).address] | ||
); | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.