mirror of
https://github.com/datahaven-xyz/datahaven
synced 2026-05-24 01:38:32 +00:00
refactor: Remove Holesky testnet support (#334)
This commit is contained in:
parent
1ce068eebe
commit
49cf560c83
10 changed files with 39 additions and 144 deletions
|
|
@ -39,11 +39,11 @@ cd ../test && bun generate:wagmi
|
|||
|
||||
Deployment parameters (EigenLayer addresses, initial validators, owners) are defined in `contracts/config/<network>.json`.
|
||||
- **Do not edit** `Config.sol` or `DeployParams.s.sol` directly; they only load the JSON.
|
||||
- Ensure `contracts/config/hoodi.json` (or `holesky.json`) matches your target environment before deploying.
|
||||
- Ensure `contracts/config/hoodi.json` matches your target environment before deploying.
|
||||
|
||||
## Deployment
|
||||
|
||||
Two deployment paths exist: **Local** (Anvil) and **Testnet** (Hoodi/Holesky). Both install the **DataHaven AVS contracts** (ServiceManager, RewardsRegistry, VetoableSlasher) and **Snowbridge** (BeefyClient, Gateway, Agent). They differ in EigenLayer setup:
|
||||
Two deployment paths exist: **Local** (Anvil) and **Testnet** (Hoodi). Both install the **DataHaven AVS contracts** (ServiceManager, RewardsRegistry, VetoableSlasher) and **Snowbridge** (BeefyClient, Gateway, Agent). They differ in EigenLayer setup:
|
||||
|
||||
### Local (Anvil)
|
||||
**`DeployLocal.s.sol`** bootstraps a full EigenLayer core deployment (DelegationManager, StrategyManager, AVSDirectory, etc.) alongside DataHaven AVS and Snowbridge.
|
||||
|
|
@ -52,7 +52,7 @@ anvil
|
|||
forge script script/deploy/DeployLocal.s.sol --rpc-url anvil --broadcast
|
||||
```
|
||||
|
||||
### Testnet (Hoodi / Holesky)
|
||||
### Testnet (Hoodi)
|
||||
**`DeployTestnet.s.sol`** references existing EigenLayer contracts (addresses from `contracts/config/<network>.json`) and only deploys DataHaven AVS + Snowbridge.
|
||||
```bash
|
||||
NETWORK=hoodi forge script script/deploy/DeployTestnet.s.sol \
|
||||
|
|
@ -60,7 +60,7 @@ NETWORK=hoodi forge script script/deploy/DeployTestnet.s.sol \
|
|||
--private-key $PRIVATE_KEY \
|
||||
--broadcast
|
||||
```
|
||||
Supported networks: `hoodi`, `holesky` (no mainnet config yet). Artifacts → `contracts/deployments/<network>.json`.
|
||||
Supported networks: `hoodi` (no mainnet config yet). Artifacts → `contracts/deployments/<network>.json`.
|
||||
|
||||
## How It Works
|
||||
1. **Registration**: Validators register with EigenLayer via `DataHavenServiceManager`.
|
||||
|
|
|
|||
|
|
@ -12,33 +12,33 @@
|
|||
/// See https://github.com/Layr-Labs/eigenlayer-contracts/tree/dev/docs#rewardscoordinator
|
||||
"rewardsUpdater": "0x90F79bf6EB2c4f870365E785982E1f101E93b906",
|
||||
/// The interval at which the new rewards merkle root is calculated.
|
||||
/// See testnet deployment: https://holesky.etherscan.io/address/0xAcc1fb458a1317E886dB376Fc8141540537E68fE#readProxyContract#F1
|
||||
/// See testnet deployment: https://hoodi.etherscan.io/address/0x29e8572678e0c272350aa0b4B8f304E47EBcd5e7#readProxyContract#F1
|
||||
"calculationIntervalSeconds": 86400,
|
||||
/// The maximum duration of rewards that can be retroactively applied.
|
||||
/// See testnet deployment: https://holesky.etherscan.io/address/0xAcc1fb458a1317E886dB376Fc8141540537E68fE#readProxyContract#F5
|
||||
/// See testnet deployment: https://hoodi.etherscan.io/address/0xAcc1fb458a1317E886dB376Fc8141540537E68fE#readProxyContract#F5
|
||||
"maxRewardsDuration": 6048000,
|
||||
/// The maximum retroactive length of rewards that can be applied.
|
||||
/// See testnet deployment: https://holesky.etherscan.io/address/0xAcc1fb458a1317E886dB376Fc8141540537E68fE#readProxyContract#F4
|
||||
/// See testnet deployment: https://hoodi.etherscan.io/address/0xAcc1fb458a1317E886dB376Fc8141540537E68fE#readProxyContract#F4
|
||||
"maxRetroactiveLength": 7776000,
|
||||
/// The maximum duration of rewards that can be applied in the future.
|
||||
/// See testnet deployment: https://holesky.etherscan.io/address/0xAcc1fb458a1317E886dB376Fc8141540537E68fE#readProxyContract#F3
|
||||
/// See testnet deployment: https://hoodi.etherscan.io/address/0xAcc1fb458a1317E886dB376Fc8141540537E68fE#readProxyContract#F3
|
||||
"maxFutureLength": 2592000,
|
||||
/// The timestamp at which rewards are first calculated.
|
||||
/// See testnet deployment: https://holesky.etherscan.io/address/0xAcc1fb458a1317E886dB376Fc8141540537E68fE#readProxyContract#F2
|
||||
/// See testnet deployment: https://hoodi.etherscan.io/address/0xAcc1fb458a1317E886dB376Fc8141540537E68fE#readProxyContract#F2
|
||||
"genesisRewardsTimestamp": 1710979200,
|
||||
/// Delay in timestamp (seconds) before a posted root can be claimed against
|
||||
/// See testnet deployment: https://holesky.etherscan.io/address/0xAcc1fb458a1317E886dB376Fc8141540537E68fE#readProxyContract#F6
|
||||
/// See testnet deployment: https://hoodi.etherscan.io/address/0xAcc1fb458a1317E886dB376Fc8141540537E68fE#readProxyContract#F6
|
||||
"activationDelay": 7200,
|
||||
/// Also called "defaultOperatorSplitBips"
|
||||
/// Used off-chain by the rewards updater to calculate an Operator's split for a specific reward.
|
||||
/// See testnet deployment: https://holesky.etherscan.io/address/0xAcc1fb458a1317E886dB376Fc8141540537E68fE#readProxyContract#F7
|
||||
/// See testnet deployment: https://hoodi.etherscan.io/address/0xAcc1fb458a1317E886dB376Fc8141540537E68fE#readProxyContract#F7
|
||||
"globalCommissionBips": 1000,
|
||||
/// Multisig address for controlling operations (we don't care as much about this).
|
||||
"executorMultisig": "0x15d34AAf54267DB7D7c367839AAf71A00a2C6A65",
|
||||
/// Multisig address for executing operations (we don't care as much about this).
|
||||
"operationsMultisig": "0x9965507D1a55bcC2695C58ba16FB37d819B0A4dc",
|
||||
/// The delay in blocks before withdrawals can be completed.
|
||||
/// See testnet deployment: https://holesky.etherscan.io/address/0xA44151489861Fe9e3055d95adC98FbD462B948e7#readProxyContract#F24
|
||||
/// See testnet deployment: https://hoodi.etherscan.io/address/0x867837a9722C512e0862d8c2E15b8bE220E8b87d#readProxyContract#F24
|
||||
"minWithdrawalDelayBlocks": 50,
|
||||
/// The initial paused status of the DelegationManager
|
||||
/// See here for more details: https://github.com/Layr-Labs/eigenlayer-contracts/blob/db0f582ba9b4df861b72269267d4980d7f3f7490/src/contracts/permissions/Pausable.sol#L12
|
||||
|
|
@ -53,16 +53,15 @@
|
|||
/// See here for more details: https://github.com/Layr-Labs/eigenlayer-contracts/blob/db0f582ba9b4df861b72269267d4980d7f3f7490/src/contracts/permissions/Pausable.sol#L12
|
||||
"allocationManagerInitPausedStatus": 0,
|
||||
/// The delay in blocks before deallocations can be completed.
|
||||
/// See testnet deployment: https://holesky.etherscan.io/address/0x78469728304326CBc65f8f95FA756B0B73164462#readProxyContract#F2
|
||||
/// See testnet deployment: https://hoodi.etherscan.io/address/0x95a7431400F362F3647a69535C5666cA0133CAA0#readProxyContract#F2
|
||||
"deallocationDelay": 50,
|
||||
/// The delay in blocks before allocation configuration can be completed.
|
||||
/// See testnet deployment: https://holesky.etherscan.io/address/0x78469728304326CBc65f8f95FA756B0B73164462#readProxyContract#F1
|
||||
/// See testnet deployment: https://hoodi.etherscan.io/address/0x95a7431400F362F3647a69535C5666cA0133CAA0#readProxyContract#F1
|
||||
"allocationConfigurationDelay": 75,
|
||||
/// The genesis time of the beacon state, to help EL calculate conversions between slot and timestamp
|
||||
/// See testnet deployment: https://holesky.etherscan.io/address/0x68bd1e75E9863C9066B46B8a44E953F918466D37#readContract#F1
|
||||
/// See EigenPodManager: https://hoodi.etherscan.io/address/0xcd1442415Fc5C29Aa848A49d2e232720BE07976c
|
||||
"beaconChainGenesisTimestamp": 1695902400
|
||||
},
|
||||
|
||||
"avs": {
|
||||
/// The owner of the DataHaven Service Manager contract.
|
||||
"avsOwner": "0x976EA74026E726554dB657fA54763abd0C3a0aa9",
|
||||
|
|
@ -77,7 +76,6 @@
|
|||
/// The EigenLayer strategy addresses for the Validators to stake into.
|
||||
"validatorsStrategies": []
|
||||
},
|
||||
|
||||
"snowbridge": {
|
||||
/// Minimum delay in number of blocks that a relayer must wait between calling
|
||||
/// submitInitial and commitPrevRandao. In production this should be set to MAX_SEED_LOOKAHEAD:
|
||||
|
|
@ -105,4 +103,4 @@
|
|||
"0xdf57089febbacf7ba0bc227dafbffa9fc08a93fdc68e1e42411a14efcf23656e"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,53 +0,0 @@
|
|||
{
|
||||
"eigenLayer": {
|
||||
"pausers": ["0x53410249ec7d3a3F9F1ba3912D50D6A3Df6d10A7"],
|
||||
"unpauser": "0xE3328cb5068924119d6170496c4AB2dD12c12d15",
|
||||
"rewardsUpdater": "0xe30a38ac89ffE5A86D5389Bfbf70C7EC766FbB6e",
|
||||
"calculationIntervalSeconds": 86400,
|
||||
"maxRewardsDuration": 6048000,
|
||||
"maxRetroactiveLength": 7776000,
|
||||
"maxFutureLength": 2592000,
|
||||
"genesisRewardsTimestamp": 1710979200,
|
||||
"activationDelay": 7200,
|
||||
"globalCommissionBips": 1000,
|
||||
"executorMultisig": "0x28Ade60640fdBDb2609D8d8734D1b5cBeFc0C348",
|
||||
"operationsMultisig": "0xfaEF7338b7490b9E272d80A1a39f4657cAf2b97d",
|
||||
"minWithdrawalDelayBlocks": 50,
|
||||
"delegationInitPausedStatus": 0,
|
||||
"eigenPodManagerInitPausedStatus": 0,
|
||||
"rewardsCoordinatorInitPausedStatus": 0,
|
||||
"allocationManagerInitPausedStatus": 0,
|
||||
"deallocationDelay": 50,
|
||||
"allocationConfigurationDelay": 75,
|
||||
"beaconChainGenesisTimestamp": 1710666600,
|
||||
"delegationManager": "0xA44151489861Fe9e3055d95adC98FbD462B948e7",
|
||||
"strategyManager": "0xdfB5f6CE42aAA7830E94ECFCcAd411beF4d4D5b6",
|
||||
"eigenPodManager": "0x30770d7E3e71112d7A6b7259542D1f680a70e315",
|
||||
"avsDirectory": "0x055733000064333CaDDbC92763c58BF0192fFeBf",
|
||||
"rewardsCoordinator": "0xAcc1fb458a1317E886dB376Fc8141540537E68fE",
|
||||
"allocationManager": "0x78469728304326CBc65f8f95FA756B0B73164462",
|
||||
"permissionController": "0x598cb226B591155F767dA17AfE7A2241a68C5C10"
|
||||
},
|
||||
"avs": {
|
||||
"avsOwner": "0xe30a38ac89ffE5A86D5389Bfbf70C7EC766FbB6e",
|
||||
"rewardsInitiator": "0xe30a38ac89ffE5A86D5389Bfbf70C7EC766FbB6e",
|
||||
"vetoCommitteeMember": "0xe30a38ac89ffE5A86D5389Bfbf70C7EC766FbB6e",
|
||||
"vetoWindowBlocks": 100,
|
||||
"validatorsStrategies": []
|
||||
},
|
||||
"snowbridge": {
|
||||
"randaoCommitDelay": 4,
|
||||
"randaoCommitExpiration": 24,
|
||||
"minNumRequiredSignatures": 2,
|
||||
"startBlock": 1,
|
||||
"rewardsMessageOrigin": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
||||
"initialValidatorHashes": [
|
||||
"0xaeb47a269393297f4b0a3c9c9cfd00c7a4195255274cf39d83dabc2fcc9ff3d7",
|
||||
"0xf68aec7304bf37f340dae2ea20fb5271ee28a3128812b84a615da4789e458bde"
|
||||
],
|
||||
"nextValidatorHashes": [
|
||||
"0xaeb47a269393297f4b0a3c9c9cfd00c7a4195255274cf39d83dabc2fcc9ff3d7",
|
||||
"0xf68aec7304bf37f340dae2ea20fb5271ee28a3128812b84a615da4789e458bde"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
@ -1 +0,0 @@
|
|||
{"network": "holesky","BeefyClient": "0xcBfD943fC9385041Fc8BCfe9705e6F803A735F09","AgentExecutor": "0x545bC12764770C4F00b05a42F81C6eF5e638B9d3","Gateway": "0xa3C18F4D07Bf97BA5B1405a3e19d59fdAe24913F","ServiceManager": "0xaCF6110009a790eC487Ed362A43FC36cCAE49bC6","ServiceManagerImplementation": "0xE9cf23E6c3d2f46F8DE93d7EFaF6222bD00C5092","VetoableSlasher": "0xDbDD8EcB2725b2720a271f98dB1A7AD31D6A5224","RewardsRegistry": "0x88F243feF1EC11426b743a98cae9Dd7A6704cdf1","RewardsAgent": "0x73C3BF5Da6E0F81423c71e3699Ec4520D020fDfF","DelegationManager": "0xA44151489861Fe9e3055d95adC98FbD462B948e7","StrategyManager": "0xdfB5f6CE42aAA7830E94ECFCcAd411beF4d4D5b6","AVSDirectory": "0x055733000064333CaDDbC92763c58BF0192fFeBf","RewardsCoordinator": "0xAcc1fb458a1317E886dB376Fc8141540537E68fE","AllocationManager": "0x78469728304326CBc65f8f95FA756B0B73164462","PermissionController": "0x598cb226B591155F767dA17AfE7A2241a68C5C10"}
|
||||
|
|
@ -114,10 +114,8 @@
|
|||
|
||||
[rpc_endpoints]
|
||||
mainnet = "${RPC_MAINNET}"
|
||||
holesky = "${RPC_HOLESKY}"
|
||||
hoodi = "https://rpc.hoodi.ethpandaops.io"
|
||||
hoodi = "${RPC_HOODI}"
|
||||
anvil = "http://localhost:8545"
|
||||
|
||||
# [etherscan]
|
||||
# mainnet = { key = "${ETHERSCAN_API_KEY}" }
|
||||
# holesky = { key = "${ETHERSCAN_API_KEY}" }
|
||||
# mainnet = { key = "${ETHERSCAN_API_KEY}" }
|
||||
|
|
@ -35,17 +35,9 @@ import {
|
|||
|
||||
/**
|
||||
* @title DeployTestnet
|
||||
* @notice Deployment script for testnets (hoodi, holesky) - references existing EigenLayer contracts
|
||||
* @notice Deployment script for testnets (hoodi) - references existing EigenLayer contracts
|
||||
*/
|
||||
contract DeployTestnet is DeployBase {
|
||||
// Supported testnet chains
|
||||
enum TestnetChain {
|
||||
HOODI,
|
||||
HOLESKY
|
||||
}
|
||||
|
||||
// Current testnet being deployed to
|
||||
TestnetChain public currentTestnet;
|
||||
string public networkName;
|
||||
|
||||
function run() public {
|
||||
|
|
@ -56,7 +48,7 @@ contract DeployTestnet is DeployBase {
|
|||
"NETWORK environment variable required for testnet deployment"
|
||||
);
|
||||
|
||||
currentTestnet = _detectAndValidateNetwork(networkName);
|
||||
_validateNetwork(networkName);
|
||||
totalSteps = 4;
|
||||
|
||||
_executeSharedDeployment();
|
||||
|
|
@ -68,12 +60,7 @@ contract DeployTestnet is DeployBase {
|
|||
}
|
||||
|
||||
function _getDeploymentMode() internal view override returns (string memory) {
|
||||
if (currentTestnet == TestnetChain.HOODI) {
|
||||
return "HOODI_TESTNET";
|
||||
} else if (currentTestnet == TestnetChain.HOLESKY) {
|
||||
return "HOLESKY_TESTNET";
|
||||
}
|
||||
return "UNKNOWN_TESTNET";
|
||||
return "HOODI_TESTNET";
|
||||
}
|
||||
|
||||
function _setupEigenLayerContracts(
|
||||
|
|
@ -234,24 +221,20 @@ contract DeployTestnet is DeployBase {
|
|||
// TESTNET-SPECIFIC FUNCTIONS
|
||||
|
||||
/**
|
||||
* @notice Detect and validate the target testnet network
|
||||
* @notice Validate that the network is hoodi (the only supported testnet)
|
||||
*/
|
||||
function _detectAndValidateNetwork(
|
||||
function _validateNetwork(
|
||||
string memory network
|
||||
) internal pure returns (TestnetChain) {
|
||||
) internal pure {
|
||||
bytes32 networkHash = keccak256(abi.encodePacked(network));
|
||||
|
||||
if (networkHash == keccak256(abi.encodePacked("hoodi"))) {
|
||||
return TestnetChain.HOODI;
|
||||
} else if (networkHash == keccak256(abi.encodePacked("holesky"))) {
|
||||
return TestnetChain.HOLESKY;
|
||||
if (networkHash != keccak256(abi.encodePacked("hoodi"))) {
|
||||
revert(
|
||||
string.concat(
|
||||
"Unsupported testnet network: ", network, ". Supported networks: hoodi"
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
revert(
|
||||
string.concat(
|
||||
"Unsupported testnet network: ", network, ". Supported networks: hoodi, holesky"
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -276,17 +259,4 @@ contract DeployTestnet is DeployBase {
|
|||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @notice Get testnet-specific configuration parameters
|
||||
* @dev Override this function to add testnet-specific logic in the future
|
||||
*/
|
||||
function _getTestnetConfig() internal view returns (string memory) {
|
||||
if (currentTestnet == TestnetChain.HOODI) {
|
||||
return "hoodi";
|
||||
} else if (currentTestnet == TestnetChain.HOLESKY) {
|
||||
return "holesky";
|
||||
}
|
||||
return "unknown";
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
# DataHaven Contracts Deployment
|
||||
|
||||
Deploy DataHaven AVS contracts to supported chains (Hoodi, Holesky, Mainnet).
|
||||
Deploy DataHaven AVS contracts to supported chains (Hoodi, Mainnet).
|
||||
|
||||
## What Gets Deployed
|
||||
|
||||
|
|
@ -13,11 +13,9 @@ Deploy DataHaven AVS contracts to supported chains (Hoodi, Holesky, Mainnet).
|
|||
1. **Account Setup**: Create or import an account in Metamask (you'll need the private key)
|
||||
2. **Funding**: Get native tokens for deployment fees:
|
||||
- **Hoodi**: Use PoW Faucet at https://hoodi-faucet.pk910.de/#/mine/cc7df92c-9629-4ad8-aaa4-53b1e1c294e8
|
||||
- **Holesky**: Use public faucets or bridge from mainnet
|
||||
- **Mainnet**: Purchase ETH
|
||||
3. **API Key** (optional): Generate API token from block explorer for contract verification:
|
||||
- Hoodi: Etherscan-compatible endpoint
|
||||
- Holesky: https://holesky.etherscan.io/apis
|
||||
- Mainnet: https://etherscan.io/apis
|
||||
|
||||
## Setup
|
||||
|
|
@ -45,11 +43,6 @@ ETHERSCAN_API_KEY=your_api_key_here
|
|||
bun cli contracts deploy --chain hoodi
|
||||
```
|
||||
|
||||
### Deploy to Holesky
|
||||
```bash
|
||||
bun cli contracts deploy --chain holesky
|
||||
```
|
||||
|
||||
### Deploy to Mainnet
|
||||
```bash
|
||||
bun cli contracts deploy --chain mainnet
|
||||
|
|
|
|||
|
|
@ -91,11 +91,11 @@ export const contractsPreActionHook = async (thisCommand: any) => {
|
|||
const privateKey = thisCommand.getOptionValue("privateKey");
|
||||
|
||||
if (!chain) {
|
||||
logger.error("❌ Chain is required. Use --chain option (hoodi, holesky, mainnet, anvil)");
|
||||
logger.error("❌ Chain is required. Use --chain option (hoodi, mainnet, anvil)");
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
const supportedChains = ["hoodi", "holesky", "mainnet", "anvil"];
|
||||
const supportedChains = ["hoodi", "mainnet", "anvil"];
|
||||
if (!supportedChains.includes(chain)) {
|
||||
logger.error(`❌ Unsupported chain: ${chain}. Supported chains: ${supportedChains.join(", ")}`);
|
||||
process.exit(1);
|
||||
|
|
|
|||
|
|
@ -198,7 +198,7 @@ const contractsCommand = program
|
|||
- update-metadata: Update the metadata URI of an existing AVS contract
|
||||
|
||||
Common options:
|
||||
--chain: Target chain (required: hoodi, holesky, mainnet, anvil)
|
||||
--chain: Target chain (required: hoodi, mainnet, anvil)
|
||||
--rpc-url: Chain RPC URL (optional, defaults based on chain)
|
||||
--private-key: Private key for deployment
|
||||
--skip-verification: Skip contract verification
|
||||
|
|
@ -210,7 +210,7 @@ const contractsCommand = program
|
|||
contractsCommand
|
||||
.command("status")
|
||||
.description("Show deployment plan, configuration, and status")
|
||||
.option("--chain <value>", "Target chain (hoodi, holesky, mainnet, anvil)")
|
||||
.option("--chain <value>", "Target chain (hoodi, mainnet, anvil)")
|
||||
.option("--rpc-url <value>", "Chain RPC URL (optional, defaults based on chain)")
|
||||
.option(
|
||||
"--private-key <value>",
|
||||
|
|
@ -225,7 +225,7 @@ contractsCommand
|
|||
contractsCommand
|
||||
.command("deploy")
|
||||
.description("Deploy DataHaven AVS contracts to specified chain")
|
||||
.option("--chain <value>", "Target chain (hoodi, holesky, mainnet, anvil)")
|
||||
.option("--chain <value>", "Target chain (hoodi, mainnet, anvil)")
|
||||
.option("--rpc-url <value>", "Chain RPC URL (optional, defaults based on chain)")
|
||||
.option(
|
||||
"--private-key <value>",
|
||||
|
|
@ -240,7 +240,7 @@ contractsCommand
|
|||
contractsCommand
|
||||
.command("verify")
|
||||
.description("Verify deployed contracts on block explorer")
|
||||
.option("--chain <value>", "Target chain (hoodi, holesky, mainnet, anvil)")
|
||||
.option("--chain <value>", "Target chain (hoodi, mainnet, anvil)")
|
||||
.option("--rpc-url <value>", "Chain RPC URL (optional, defaults based on chain)")
|
||||
.option("--skip-verification", "Skip contract verification", false)
|
||||
.hook("preAction", contractsPreActionHook)
|
||||
|
|
@ -250,7 +250,7 @@ contractsCommand
|
|||
contractsCommand
|
||||
.command("update-metadata")
|
||||
.description("Update AVS metadata URI for the DataHaven Service Manager")
|
||||
.option("--chain <value>", "Target chain (hoodi, holesky, mainnet, anvil)")
|
||||
.option("--chain <value>", "Target chain (hoodi, mainnet, anvil)")
|
||||
.option("--uri <value>", "New metadata URI (required)")
|
||||
.option("--reset", "Use if you want to reset the metadata URI")
|
||||
.option("--rpc-url <value>", "Chain RPC URL (optional, defaults based on chain)")
|
||||
|
|
@ -278,7 +278,7 @@ contractsCommand
|
|||
// Default Contracts command (runs check)
|
||||
contractsCommand
|
||||
.description("Show deployment plan, configuration, and status")
|
||||
.option("--chain <value>", "Target chain (hoodi, holesky, mainnet, anvil)")
|
||||
.option("--chain <value>", "Target chain (hoodi, mainnet, anvil)")
|
||||
.option("--rpc-url <value>", "Chain RPC URL (optional, defaults based on chain)")
|
||||
.option(
|
||||
"--private-key <value>",
|
||||
|
|
|
|||
|
|
@ -14,16 +14,6 @@ export const CHAIN_CONFIGS = {
|
|||
EPOCHS_PER_SYNC_COMMITTEE_PERIOD: 256,
|
||||
SYNC_COMMITTEE_SIZE: 512
|
||||
},
|
||||
holesky: {
|
||||
NETWORK_NAME: "holesky",
|
||||
CHAIN_ID: 17000,
|
||||
RPC_URL: "https://ethereum-holesky-rpc.publicnode.com",
|
||||
BLOCK_EXPLORER: "https://holesky.etherscan.io/",
|
||||
GENESIS_TIME: 1695902400,
|
||||
SLOT_TIME: 12, // seconds
|
||||
EPOCHS_PER_SYNC_COMMITTEE_PERIOD: 256,
|
||||
SYNC_COMMITTEE_SIZE: 512
|
||||
},
|
||||
mainnet: {
|
||||
NETWORK_NAME: "mainnet",
|
||||
CHAIN_ID: 1,
|
||||
|
|
|
|||
Loading…
Reference in a new issue