more env functions, create deploy
This commit is contained in:
parent
45b056acce
commit
efe2fee40e
|
@ -15,24 +15,25 @@ import { env } from "./lib/common";
|
||||||
});
|
});
|
||||||
|
|
||||||
const TEST_MNEMONIC = "test test test test test test test test test test test junk";
|
const TEST_MNEMONIC = "test test test test test test test test test test test junk";
|
||||||
|
const LOCAL_NODE_URL = "http://127.0.0.1:8545";
|
||||||
|
|
||||||
const config: HardhatUserConfig = {
|
const config: HardhatUserConfig = {
|
||||||
solidity: "0.8.28",
|
solidity: "0.8.28",
|
||||||
networks: {
|
networks: {
|
||||||
localhost: {
|
localhost: {
|
||||||
url: "http://127.0.0.1:8545",
|
url: LOCAL_NODE_URL,
|
||||||
accounts: {
|
accounts: {
|
||||||
mnemonic: process.env.MNEMONIC || TEST_MNEMONIC
|
mnemonic: process.env.MNEMONIC || TEST_MNEMONIC
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mainnet: {
|
mainnet: {
|
||||||
url: env("MAINNET_RPC_URL"),
|
url: env("MAINNET_RPC_URL", LOCAL_NODE_URL),
|
||||||
accounts: {
|
accounts: {
|
||||||
mnemonic: env("MNEMONIC", TEST_MNEMONIC)
|
mnemonic: env("MNEMONIC", TEST_MNEMONIC)
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
testnet: {
|
testnet: {
|
||||||
url: env("TESTNET_RPC_URL"),
|
url: env("TESTNET_RPC_URL", LOCAL_NODE_URL),
|
||||||
accounts: {
|
accounts: {
|
||||||
mnemonic: env("MNEMONIC", TEST_MNEMONIC)
|
mnemonic: env("MNEMONIC", TEST_MNEMONIC)
|
||||||
}
|
}
|
||||||
|
@ -44,7 +45,15 @@ const config: HardhatUserConfig = {
|
||||||
sourcify: {
|
sourcify: {
|
||||||
enabled: true
|
enabled: true
|
||||||
},
|
},
|
||||||
defaultNetwork: "localhost"
|
defaultNetwork: "localhost",
|
||||||
|
ignition: {
|
||||||
|
strategyConfig: {
|
||||||
|
create2: {
|
||||||
|
// To learn more about salts, see the CreateX documentation
|
||||||
|
salt: env("SALT", "0x0000000000000000000000000000000000000000000000000000000000000000"),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
export default config;
|
export default config;
|
||||||
|
|
|
@ -0,0 +1,27 @@
|
||||||
|
import { config as dotenvConfig } from "dotenv";
|
||||||
|
import { resolve } from "path";
|
||||||
|
import { buildModule } from "@nomicfoundation/hardhat-ignition/modules";
|
||||||
|
import { env, envAsBigInt, envAsAddress } from "../../lib/common";
|
||||||
|
|
||||||
|
[
|
||||||
|
`.env.${process.env.APP_ENV}.contracts`,
|
||||||
|
`.env.${process.env.APP_ENV}.data`,
|
||||||
|
`.env.${process.env.APP_ENV}`
|
||||||
|
]
|
||||||
|
.forEach((dotenvConfigPath) => {
|
||||||
|
const path = resolve(__dirname, dotenvConfigPath);
|
||||||
|
dotenvConfig({ path, override: true })
|
||||||
|
});
|
||||||
|
|
||||||
|
export default buildModule("TenGransToken", (m) => {
|
||||||
|
const tenGransToken = m.contract("TenGransToken", [
|
||||||
|
env("TOKEN_NAME"),
|
||||||
|
env("TOKEN_SYMBOL"),
|
||||||
|
envAsBigInt("TOKEN_AMOUNT"),
|
||||||
|
envAsBigInt("CAP_AMOUNT"),
|
||||||
|
envAsAddress("SIGNER"),
|
||||||
|
envAsBigInt("NATIVE_CHAIN_ID")
|
||||||
|
]);
|
||||||
|
|
||||||
|
return { tenGransToken };
|
||||||
|
});
|
|
@ -6,6 +6,28 @@ export const env = (variable: string, defaultValue?: string): string => {
|
||||||
else throw new Error(`Environment variable: "${variable}" not set`);
|
else throw new Error(`Environment variable: "${variable}" not set`);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const envAsBigInt = (variable: string, defaultValue?: bigint): bigint => {
|
||||||
|
const key = process.env[variable];
|
||||||
|
if (!key) {
|
||||||
|
if (defaultValue === undefined) throw new Error(`Environment variable: "${variable}" not set`);
|
||||||
|
else return defaultValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (/^\d+$/.test(key)) return BigInt(key);
|
||||||
|
else throw new Error(`Environment variable: ${key} is not a number`);
|
||||||
|
};
|
||||||
|
|
||||||
|
export const envAsAddress = (variable: string, defaultValue?: `0x${string}`): `0x${string}` => {
|
||||||
|
if (process.env[variable]) {
|
||||||
|
const x = process.env[variable] as string;
|
||||||
|
// TODO: checksum.
|
||||||
|
if (/0x[0-9a-f]{40}/i.test(x)) return x as `0x${string}`;
|
||||||
|
else throw new Error(`Environment variable: ${variable} is not an address`);
|
||||||
|
}
|
||||||
|
else if (defaultValue) return defaultValue;
|
||||||
|
else throw new Error(`Environment variable: "${variable}" not set`);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
export class DataRecorder {
|
export class DataRecorder {
|
||||||
public readonly filename;
|
public readonly filename;
|
||||||
|
|
Loading…
Reference in New Issue