-
Notifications
You must be signed in to change notification settings - Fork 21
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
16 changed files
with
1,747 additions
and
192 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
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,64 +1,84 @@ | ||
import { | ||
arbitrum, | ||
arbitrumSepolia, | ||
base, | ||
baseSepolia, | ||
bsc, | ||
type Chain, | ||
gnosis, | ||
holesky, | ||
linea, | ||
lineaSepolia, | ||
mainnet, | ||
optimism, | ||
optimismSepolia, | ||
polygon, | ||
scroll, | ||
scrollSepolia, | ||
sepolia, | ||
} from "viem/chains"; | ||
|
||
export enum ESupportedNetworks { | ||
ETHEREUM = "mainnet", | ||
OPTIMISM = "optimism", | ||
OPTIMISM_SEPOLIA = "optimism-sepolia", | ||
BSC = "bsc", | ||
BSC_CHAPEL = "chapel", | ||
GNOSIS_CHAIN = "gnosis", | ||
FUSE = "fuse", | ||
POLYGON = "matic", | ||
FANTOM_OPERA = "fantom", | ||
ZKSYNC_ERA_TESTNET = "zksync-era-testnet", | ||
BOBA = "boba", | ||
MOONBEAM = "moonbeam", | ||
MOONRIVER = "moonriver", | ||
MOONBASE_ALPHA = "mbase", | ||
FANTOM_TESTNET = "fantom-testnet", | ||
ARBITRUM_ONE = "arbitrum-one", | ||
CELO = "celo", | ||
AVALANCHE_FUJI = "fuji", | ||
AVALANCHE = "avalanche", | ||
CELO_ALFAJORES = "celo-alfajores", | ||
HOLESKY = "holesky", | ||
AURORA = "aurora", | ||
AURORA_TESTNET = "aurora-testnet", | ||
HARMONY = "harmony", | ||
LINEA_SEPOLIA = "linea-sepolia", | ||
GNOSIS_CHIADO = "gnosis-chiado", | ||
MODE_SEPOLIA = "mode-sepolia", | ||
MODE = "mode-mainnet", | ||
BASE_SEPOLIA = "base-sepolia", | ||
ZKSYNC_ERA_SEPOLIA = "zksync-era-sepolia", | ||
POLYGON_ZKEVM = "polygon-zkevm", | ||
ZKSYNC_ERA = "zksync-era", | ||
ETHEREUM_SEPOLIA = "sepolia", | ||
ARBITRUM_SEPOLIA = "arbitrum-sepolia", | ||
LINEA = "linea", | ||
BASE = "base", | ||
SCROLL_SEPOLIA = "scroll-sepolia", | ||
SCROLL = "scroll", | ||
BLAST_MAINNET = "blast-mainnet", | ||
ASTAR_ZKEVM_MAINNET = "astar-zkevm-mainnet", | ||
SEI_TESTNET = "sei-testnet", | ||
BLAST_TESTNET = "blast-testnet", | ||
ETHERLINK_TESTNET = "etherlink-testnet", | ||
XLAYER_SEPOLIA = "xlayer-sepolia", | ||
XLAYER_MAINNET = "xlayer-mainnet", | ||
POLYGON_AMOY = "polygon-amoy", | ||
ZKYOTO_TESTNET = "zkyoto-testnet", | ||
POLYGON_ZKEVM_CARDONA = "polygon-zkevm-cardona", | ||
SEI_MAINNET = "sei-mainnet", | ||
ROOTSTOCK_MAINNET = "rootstock", | ||
IOTEX_MAINNET = "iotex", | ||
NEAR_MAINNET = "near-mainnet", | ||
NEAR_TESTNET = "near-testnet", | ||
COSMOS = "cosmoshub-4", | ||
COSMOS_HUB = "theta-testnet-001", | ||
OSMOSIS = "osmosis-1", | ||
OSMO_TESTNET = "osmo-test-4", | ||
ARWEAVE = "arweave-mainnet", | ||
BITCOIN = "btc", | ||
SOLANA = "solana-mainnet-beta", | ||
INJECTIVE_MAINNET = "injective-mainnet", | ||
INJECTIVE_TESTNET = "injective-testnet", | ||
} | ||
|
||
/** | ||
* Get the Viem chain for a given network | ||
* | ||
* @param network - the network to get the chain for | ||
* @returns the Viem chain | ||
*/ | ||
export const viemChain = (network: ESupportedNetworks): Chain => { | ||
switch (network) { | ||
case ESupportedNetworks.ETHEREUM: | ||
return mainnet; | ||
case ESupportedNetworks.ETHEREUM_SEPOLIA: | ||
return sepolia; | ||
case ESupportedNetworks.ARBITRUM_ONE: | ||
return arbitrum; | ||
case ESupportedNetworks.ARBITRUM_SEPOLIA: | ||
return arbitrumSepolia; | ||
case ESupportedNetworks.BASE_SEPOLIA: | ||
return baseSepolia; | ||
case ESupportedNetworks.LINEA_SEPOLIA: | ||
return lineaSepolia; | ||
case ESupportedNetworks.SCROLL_SEPOLIA: | ||
return scrollSepolia; | ||
case ESupportedNetworks.SCROLL: | ||
return scroll; | ||
case ESupportedNetworks.BASE: | ||
return base; | ||
case ESupportedNetworks.HOLESKY: | ||
return holesky; | ||
case ESupportedNetworks.LINEA: | ||
return linea; | ||
case ESupportedNetworks.BSC: | ||
return bsc; | ||
case ESupportedNetworks.GNOSIS_CHAIN: | ||
return gnosis; | ||
case ESupportedNetworks.POLYGON: | ||
return polygon; | ||
case ESupportedNetworks.OPTIMISM: | ||
return optimism; | ||
case ESupportedNetworks.OPTIMISM_SEPOLIA: | ||
return optimismSepolia; | ||
default: | ||
throw new Error(`Unsupported network: ${network}`); | ||
} | ||
}; |
16 changes: 16 additions & 0 deletions
16
packages/coordinator/ts/deployer/__tests__/deployer.controller.test.ts
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 |
---|---|---|
@@ -0,0 +1,16 @@ | ||
describe("SessionKeysController", () => { | ||
beforeEach(async () => {}); | ||
|
||
afterEach(() => { | ||
jest.clearAllMocks(); | ||
}); | ||
|
||
describe("v1/deploy/maci", () => { | ||
test("should deploy all contract", async () => {}); | ||
test("should only deploy the contracts that are not deployed", async () => {}); | ||
}); | ||
|
||
describe("v1/deploy/poll", () => { | ||
test("should deploy a new poll", () => {}); | ||
}); | ||
}); |
59 changes: 59 additions & 0 deletions
59
packages/coordinator/ts/deployer/__tests__/deployer.service.test.ts
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 |
---|---|---|
@@ -0,0 +1,59 @@ | ||
import dotenv from "dotenv"; | ||
import { ErrorCodes, ESupportedNetworks } from "../../common"; | ||
import { DeployerService } from "../deployer.service"; | ||
import { FileService } from "../../file/file.service"; | ||
import { testMaciDeploymentConfig } from "./utils"; | ||
import { SessionKeysService } from "../../sessionKeys/sessionKeys.service"; | ||
import { CryptoService } from "../../crypto/crypto.service"; | ||
|
||
dotenv.config(); | ||
|
||
describe("DeployerService", () => { | ||
afterEach(() => { | ||
jest.clearAllMocks(); | ||
}); | ||
|
||
const chain = ESupportedNetworks.OPTIMISM_SEPOLIA; | ||
|
||
const fileService = new FileService(); | ||
const deployerService = new DeployerService(fileService); | ||
|
||
const sessionKeyService = new SessionKeysService(new CryptoService(), fileService); | ||
|
||
let approval: string; | ||
let sessionKeyAddress: string; | ||
|
||
before(() => { | ||
sessionKeyAddress = sessionKeyService.generateSessionKey().sessionKeyAddress; | ||
sessionKeyAddress = sessionKeyService.generateSessionKey().sessionKeyAddress; | ||
}); | ||
|
||
describe("deployMaci", () => { | ||
test("should throw when passing a non existent session key address", async () => { | ||
await expect( | ||
deployerService.deployMaci({ | ||
config: testMaciDeploymentConfig, | ||
chain, | ||
approval: "", | ||
sessionKeyAddress: "0x", | ||
}), | ||
).rejects.toThrow(ErrorCodes.SESSION_KEY_NOT_FOUND); | ||
}); | ||
|
||
// test("should deploy maci contracts", async () => { | ||
// const maciAddress = await deployerService.deployMaci({ | ||
// config: testMaciDeploymentConfig, | ||
// chain, | ||
// approval: "", | ||
// sessionKeyAddress: "0x" | ||
// }) | ||
// }); | ||
}); | ||
|
||
describe("deployPoll", () => { | ||
test("should throw when passing a non existent maci address", async () => {}); | ||
test("should deploy a poll", () => {}); | ||
}); | ||
|
||
test("should deploy a poll", () => {}); | ||
}); |
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 |
---|---|---|
@@ -0,0 +1,31 @@ | ||
import { EGatekeepers, EInitialVoiceCreditProxies } from "maci-contracts"; | ||
import { IDeployMaciConfig } from "../types"; | ||
|
||
/** | ||
* MACI deployment configuration | ||
*/ | ||
export const testMaciDeploymentConfig: IDeployMaciConfig = { | ||
gatekeeper: { | ||
type: EGatekeepers.FreeForAll, | ||
args: [], | ||
}, | ||
initialVoiceCreditsProxy: { | ||
type: EInitialVoiceCreditProxies.Constant, | ||
args: { | ||
amount: 100, | ||
}, | ||
}, | ||
MACI: { | ||
gatekeeper: EGatekeepers.FreeForAll, | ||
stateTreeDepth: 10, | ||
}, | ||
VkRegistry: { | ||
args: { | ||
stateTreeDepth: 10, | ||
messageTreeDepth: 2, | ||
voteOptionTreeDepth: 2, | ||
messageBatchDepth: 1, | ||
intStateTreeDepth: 1, | ||
}, | ||
}, | ||
}; |
Oops, something went wrong.