Skip to content

Commit

Permalink
feat: AVS mainnet deployment (#3945)
Browse files Browse the repository at this point in the history
### Description

- Added all the strategies used by EigenDA on mainnet
here:https://github.com/Layr-Labs/eigenlayer-contracts?tab=readme-ov-file#deployments
- Deployed AVS contracts to mainnet 
- Added contract address to CLI 

(reminder: strategies are just LST tokens supported for restaking. These
are not relevant for us but brings us to parity with most other AVSs).

### Drive-by changes

- `avsSigningKey` renamed to `avsSigningKeyAddress` as `avsSigningKey`
may imply the private key and confuse operators.

### Related issues

<!--
- Fixes #[issue number here]
-->

### Backward compatibility

<!--
Are these changes backward compatible? Are there any infrastructure
implications, e.g. changes that would prohibit deploying older commits
using this infra tooling?

Yes/No
-->

### Testing

<!--
What kind of testing have these changes undergone?

None/Manual/Unit Tests
-->
  • Loading branch information
aroralanuk authored Jun 13, 2024
1 parent 29f3685 commit f4bbfcf
Show file tree
Hide file tree
Showing 5 changed files with 64 additions and 8 deletions.
5 changes: 5 additions & 0 deletions .changeset/strong-colts-hide.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@hyperlane-xyz/cli': minor
---

AVS deployment on mainnet
40 changes: 40 additions & 0 deletions solidity/script/avs/eigenlayer_addresses.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,54 @@
"avsDirectory": "0x135DDa560e946695d6f155dACaFC6f1F25C1F5AF",
"paymentCoordinator": "",
"strategies": [
{
"name": "swETH",
"strategy": "0x0Fe4F44beE93503346A3Ac9EE5A26b130a5796d6"
},
{
"name": "oETH",
"strategy": "0x13760F50a9d7377e4F20CB8CF9e4c26586c658ff"
},
{
"name": "rETH",
"strategy": "0x1BeE69b7dFFfA4E2d53C2a2Df135C388AD25dCD2"
},
{
"name": "mETH",
"strategy": "0x298aFB19A105D59E74658C4C334Ff360BadE6dd2"
},
{
"name": "cbETH",
"strategy": "0x54945180dB7943c0ed0FEE7EdaB2Bd24620256bc"
},
{
"name": "osETH",
"strategy": "0x57ba429517c3473B6d34CA9aCd56c0e735b94c02"
},
{
"name": "wBETH",
"strategy": "0x7CA911E83dabf90C90dD3De5411a10F1A6112184"
},
{
"name": "sfrxETH",
"strategy": "0x8CA7A5d6f3acd3A7A8bC468a8CD0FB14B6BD28b6"
},
{
"name": "stETH",
"strategy": "0x93c4b944D05dfe6df7645A86cd2206016c51564D"
},
{
"name": "ETHx",
"strategy": "0x9d7eD45EE2E8FC5482fa2428f15C971e6369011d"
},
{
"name": "ankrETH",
"strategy": "0xa4C637e0F704745D182e4D38cAb7E7485321d059"
},
{
"name": "lsETH",
"strategy": "0xAe60d8180437b5C34bB956822ac2710972584473"
},
{
"name": "Beacon Chain ETH",
"strategy": "0xbeaC0eeEeeeeEEeEeEEEEeeEEeEeeeEeeEEBEaC0"
Expand Down
6 changes: 6 additions & 0 deletions typescript/cli/src/avs/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,10 @@ export const avsAddresses: ChainMap<AVSContracts> = {
ecdsaStakeRegistry: '0xFfa913705484C9BAea32Ffe9945BeA099A1DFF72',
hyperlaneServiceManager: '0xc76E477437065093D353b7d56c81ff54D167B0Ab',
},
ethereum: {
avsDirectory: '0x135dda560e946695d6f155dacafc6f1f25c1f5af',
proxyAdmin: '0x75EE15Ee1B4A75Fa3e2fDF5DF3253c25599cc659',
ecdsaStakeRegistry: '0x272CF0BB70D3B4f79414E0823B426d2EaFd48910',
hyperlaneServiceManager: '0xe8E59c6C8B56F2c178f63BCFC4ce5e5e2359c8fc',
},
};
8 changes: 4 additions & 4 deletions typescript/cli/src/avs/stakeRegistry.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,12 @@ export async function registerOperatorWithSignature({
context,
chain,
operatorKeyPath,
avsSigningKey,
avsSigningKeyAddress,
}: {
context: WriteCommandContext;
chain: ChainName;
operatorKeyPath: string;
avsSigningKey: Address;
avsSigningKeyAddress: Address;
}) {
const { multiProvider } = context;

Expand Down Expand Up @@ -67,13 +67,13 @@ export async function registerOperatorWithSignature({
}

log(
`Registering operator ${operatorAsSigner.address} attesting ${avsSigningKey} with signature on ${chain}...`,
`Registering operator ${operatorAsSigner.address} attesting ${avsSigningKeyAddress} with signature on ${chain}...`,
);
await multiProvider.handleTx(
chain,
ecdsaStakeRegistry.registerOperatorWithSignature(
operatorSignature,
avsSigningKey,
avsSigningKeyAddress,
),
);
logBlue(`Operator ${operatorAsSigner.address} registered to Hyperlane AVS`);
Expand Down
13 changes: 9 additions & 4 deletions typescript/cli/src/commands/avs.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ export const registrationOptions: { [k: string]: Options } = {
description: 'Path to the operator key file',
demandOption: true,
},
avsSigningKey: {
avsSigningKeyAddress: {
type: 'string',
description: 'Address of the AVS signing key',
demandOption: true,
Expand All @@ -50,17 +50,22 @@ export const registrationOptions: { [k: string]: Options } = {
const registerCommand: CommandModuleWithWriteContext<{
chain: ChainName;
operatorKeyPath: string;
avsSigningKey: Address;
avsSigningKeyAddress: Address;
}> = {
command: 'register',
describe: 'Register operator with the AVS',
builder: registrationOptions,
handler: async ({ context, chain, operatorKeyPath, avsSigningKey }) => {
handler: async ({
context,
chain,
operatorKeyPath,
avsSigningKeyAddress,
}) => {
await registerOperatorWithSignature({
context,
chain,
operatorKeyPath,
avsSigningKey,
avsSigningKeyAddress,
});
process.exit(0);
},
Expand Down

0 comments on commit f4bbfcf

Please sign in to comment.