Uh oh!
There was an error while loading. Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork 401
Feat(docs): Docs for Operator Whitelisting with Multisig#1526
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Uh oh!
There was an error while loading. Please reload this page.
Changes from all commits
654a119350090986f5d6b0e68720e87d4cacc67729963114e38504a2c2f180bfe8bec90f70567b6f061221ca54385af1d078cec29ed9f5ff81548bb70838f8025b20584b2091f586494File filter
Filter by extension
Conversations
Uh oh!
There was an error while loading. Please reload this page.
Jump to
Uh oh!
There was an error while loading. Please reload this page.
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,60 @@ | ||
| # Whitelist Operators | ||
| This doc contains a guide on how to Whitelist Operators in Aligned. | ||
| To run the make targets specified in this guide, you must first set the following env vars within `./contracts/scripts/.env.<NETWORK>`: | ||
| ``` | ||
| RPC_URL=<rpc_url> | ||
| OUTPUT_PATH=<aligned_deployment_output_file_path> | ||
| PRIVATE_KEY=<registry_coordinator_owner_private_key> | ||
| ``` | ||
| ## Without Multisig | ||
| ### Adding to Whitelist | ||
| You can whitelist a single Operator as following: | ||
| ``` | ||
| make operator_whitelist OPERATOR_ADDRESS=<operator_address> | ||
| ``` | ||
| Or you can whitelist multiple Operators as following: | ||
| ``` | ||
| make operator_whitelist OPERATOR_ADDRESS=<operator_address1,operator_address2,...,operator_addressN> | ||
| ``` | ||
| Note how there are no spaces between the commas that separate each Operator address. | ||
| For example: | ||
| ``` | ||
| make operator_whitelist OPERATOR_ADDRESS=0x70997970C51812dc3A010C7d01b50e0d17dc79C8,0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC,0x90F79bf6EB2c4f870365E785982E1f101E93b906 | ||
| ``` | ||
| ### Removing from Whitelist | ||
| You can remove from whitelist a single Operator as following: | ||
| ``` | ||
| make operator_remove_from_whitelist OPERATOR_ADDRESS=<operator_address> | ||
| ``` | ||
| Or you can remove from whitelist multiple Operators as following: | ||
| ``` | ||
| make operator_remove_from_whitelist OPERATOR_ADDRESS=<operator_address1,operator_address2,...,operator_addressN> | ||
| ``` | ||
| Note how there are no spaces between the commas that separate each Operator address. | ||
| For example: | ||
| ``` | ||
| make operator_remove_from_whitelist OPERATOR_ADDRESS=0x70997970C51812dc3A010C7d01b50e0d17dc79C8,0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC,0x90F79bf6EB2c4f870365E785982E1f101E93b906 | ||
| ``` | ||
| ### Viewing Operator Whitelist status | ||
| ```bash | ||
| cast call --rpc-url <RPC_URL> <REGISTRY_COORDINATOR_ADDRESS> "isWhitelisted(address)" <OPERATOR_ADDRESS> | ||
| ``` | ||
| ## With Multisig | ||
| To add or remove Operators from the Whitelist using a Multisig, you can follow the next [guide](./5_b_1_propose_whitelist.md) |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,59 @@ | ||
| # Propose the Transaction for Whitelisting Operators using Multisig | ||
| If you want to Whitelist Operators, you can propose the whitelist operator transaction using the multisig wallet. | ||
| ## Prerequisites | ||
| - You need to have deployed the contracts following the [Deploy Contracts Guide](./2_deploy_contracts.md). | ||
| ## Propose transaction for Whitelist Operators | ||
| To propose the whitelist transaction you can follow the steps below: | ||
| 1. Go to [Safe](https://app.safe.global/home) | ||
| 2. Click on `New transaction` -> `Transaction Builder` | ||
|  | ||
|  | ||
| 3. Get the `registryCoordinator` address from ```contracts/script/output/mainnet/alignedlayer_deployment_output.json``` or ```contracts/script/output/holesky/alignedlayer_deployment_output.json``` or ```contracts/script/output/sepolia/alignedlayer_deployment_output.json``` | ||
| 4. Paste the `registryCoordinator` address on `Enter Address or ENS Name` | ||
PatStiles marked this conversation as resolved.
Uh oh!There was an error while loading. Please reload this page. | ||
|  | ||
| 5. As this is a Proxy contract, choose `Use Implementation ABI` | ||
|  | ||
| If `Use Implementation ABI`, did not show up you will need to submit the call via raw calldata. Consult this alternative [guide](./5_b_1b_propose_whitelist_with_call_data.md) | ||
| 6. In `Contract Method Selector` choose `add_multiple()` in the `_addresses(address[])` field, enter the operator addresses in the following format `[<OPERATOR_ADDRESS>, ..., <OPERATOR_ADDRESS>]` for example, `[0000000000000000000000000000000000000009, 0000000000000000000000000000000000000003]` | ||
|  | ||
| 7. Click on `+ Add new transaction` | ||
| You should see the new transaction to be executed | ||
|  | ||
| 8. Click on `Create batch` to create the transaction. | ||
|  | ||
| 9. Simulate the transaction by clicking on `Simulate` | ||
|  | ||
| 10. If everything is correct, click on `Send batch` to send the transaction. | ||
| 11. Simulate the transaction, and if everything is correct, click on `Sign`. | ||
|  | ||
| 12. Wait for the transaction to be executed. You can check the transaction status on the `Transactions` tab. | ||
| 13. If the transaction is correctly created, you have to wait until the required Multisig member signs the transaction to send it. For this, you can follow [the following guide](./5_b_2_approve_whitelist.md) | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,20 @@ | ||
| Turn on the `Custom Data` flag. | ||
|  | ||
| Generate the call data for function to white list an operator ```add_multiple(address[])``` by running: | ||
| ```bash | ||
| cast calldata "add_multiple(address[])" "[<OPERATOR_ADDRESS>, ...]" | ||
| ``` | ||
| For example: | ||
| ```bash | ||
| cast calldata "add_multiple(address[])" "[0x0000000000000000000000000000000000000009, 0x0000000000000000000000000000000000000003]" | ||
| ``` | ||
| will display ```0x6c7089040000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000003``` | ||
| Confirm the calldata starts with the correct function identifier ```0x6c708904```. | ||
| In `Data` field paste the previously generated call data. Also check the `To Address` is the correct `registryCoordinator` address, and the `ETH value` should be set to `0`. | ||
|  |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,37 @@ | ||
| # Approve the Whitelist Transaction | ||
| Once the transaction is proposed, the multisig owners must approve the transaction. | ||
| ## Approve the Whitelist for registryCoordinator | ||
PatStiles marked this conversation as resolved.
Uh oh!There was an error while loading. Please reload this page. | ||
| 1. Go to [Safe](https://app.safe.global/home) and connect your wallet. | ||
| 2. Go to the `Transactions` tab and find the transaction that was proposed. | ||
| 3. Get the ```add_multiple(address[])``` signature by running: | ||
| ```bash | ||
| cast calldata "add_multiple(address[])" "[<OPERATOR_ADDRESS>, ...]" | ||
| ``` | ||
| For example: | ||
| ```bash | ||
| cast calldata "add_multiple(address[])" "[0x0000000000000000000000000000000000000009, 0x0000000000000000000000000000000000000003]" | ||
| ``` | ||
| will display ```0x6c7089040000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000003``` | ||
| Confirm the calldata starts with the correct function identifier ```0x6c708904```. | ||
| 4. Click on the transaction, and then click on ```Advanced Details```. | ||
|  | ||
| 5. Copy the ```Raw Data```, paste it in a text editor and verify it is the same value as the one you got in step 3. | ||
| 6. If the data is correct, click on the `Confirm` button. | ||
| 7. Simulate the transaction. If everything is correct, click on the `Sign` button. | ||
|  | ||
| 8. Once the transaction is executed, the operator will be whitelisted within the `registryCoordinator` contract. | ||
PatStiles marked this conversation as resolved.
Uh oh!There was an error while loading. Please reload this page. | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,59 @@ | ||
| # Propose the Transaction for Removing Operators using Multisig | ||
| If you want to Removing Operators, you can propose the remove operator transaction using the multisig wallet. | ||
| ## Prerequisites | ||
| - You need to have deployed the contracts following the [Deploy Contracts Guide](./2_deploy_contracts.md). | ||
| ## Propose transaction for Removing Operators | ||
| To propose a remove operator from whitelist transaction you can follow the steps below: | ||
| 1. Go to [Safe](https://app.safe.global/home) | ||
| 2. Click on `New transaction` -> `Transaction Builder` | ||
|  | ||
|  | ||
| 3. Get the `registryCoordinator` address from ```contracts/script/output/mainnet/alignedlayer_deployment_output.json``` or ```contracts/script/output/holesky/alignedlayer_deployment_output.json``` or ```contracts/script/output/sepolia/alignedlayer_deployment_output.json``` | ||
| 4. Paste the `registryCoordinator` address on `Enter Address or ENS Name` | ||
|  | ||
| 5. As this is a Proxy contract, choose `Use Implementation ABI` | ||
|  | ||
| If `Use Implementation ABI`, did not show up you will need to submit the call via raw calldata. Consult this this alternative [guide](./5_b_3b_propose_remove_operator_with_call_data.md) | ||
| 6. In `contract method selector` choose `remove_multiple()` in the `_addresses(address[])` field, enter the operator addresses in the following format `[<OPERATOR_ADDRESS>, ..., <OPERATOR_ADDRESS>]` for example, `[0000000000000000000000000000000000000009, 0000000000000000000000000000000000000003]` | ||
|  | ||
| 7. Click on `+ Add new transaction` | ||
| You should see the new transaction to be executed | ||
|  | ||
| 8. Click on `Create Batch` to create the transaction. | ||
|  | ||
| 9. Simulate the transaction by clicking on `Simulate` | ||
|  | ||
| 10. If everything is correct, click on `Send batch` to send the transaction. | ||
| 11. Simulate the transaction, and if everything is correct, click on `Sign`. | ||
|  | ||
| 12. Wait for the transaction to be executed. You can check the transaction status on the `Transactions` tab. | ||
| 13. If the transaction is correctly created, you have to wait until the required Multisig member signs the transaction to send it. For this, you can follow [the following guide](./5_b_4_approve_remove_operator.md) |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,21 @@ | ||
| Turn on the `Custom Data` flag. | ||
|  | ||
| Generate the call data for function to white list an operator ```remove_multiple(address[])``` by running: | ||
| ```bash | ||
| cast calldata "remove_multiple(address[])" "[<OPERATOR_ADDRESS>, ...]" | ||
| ``` | ||
| For example: | ||
| ```bash | ||
| cast calldata "remove_multiple(address[])" "[0x0000000000000000000000000000000000000009, 0x0000000000000000000000000000000000000003]" | ||
| ``` | ||
| will display ```0x53abfad40000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000003``` | ||
| Confirm the calldata starts with the correct function identifier ```0x53abfad4```. | ||
| In `Data` field paste the previously generated call data. Also check the `To Address` is the correct `registryCoordinator` address, and the `ETH value` should be set to `0`. | ||
|  |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,37 @@ | ||
| # Approve the Remove Operator Transaction | ||
| Once the transaction is proposed, the multisig owners must approve the transaction. | ||
| ## Approve the Remove Operator for registryCoordinator | ||
| 1. Go to [Safe](https://app.safe.global/home) and connect your wallet. | ||
| 2. Go to the `Transactions` tab and find the transaction that was proposed. | ||
| 3. Get the ```remove_multiple(address[])``` signature by running: | ||
| ```bash | ||
| cast calldata "remove_multiple(address[])" "[<OPERATOR_ADDRESS>, ...]" | ||
| ``` | ||
| For example: | ||
| ```bash | ||
| cast calldata "remove_multiple(address[])" "[0x0000000000000000000000000000000000000009, 0x0000000000000000000000000000000000000003]" | ||
| ``` | ||
| will display ```0x53abfad40000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000003``` | ||
| Confirm the calldata starts with the correct function identifier ```0x53abfad4```. | ||
| 4. Click on the transaction, and then click on ```Advanced Details```. | ||
|  | ||
| 5. Copy the ```Raw Data```, paste it in a text editor and verify it is the same value as the one you got in step 3. | ||
| 6. If the data is correct, click on the `Confirm` button. | ||
| 7. Simulate the transaction. If everything is correct, click on the `Sign` or `Execute` (if you are the last signer) button. | ||
|  | ||
| 8. Once the transaction is executed, the operator will be removed within the `registryCoordinator` contract. |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,47 @@ | ||
| # Whitelist Operators with a Multisig | ||
| > [!WARNING] | ||
| > Safe Multisig Wallet is not currently supported in Holesky Testnet. | ||
| > For this reason, we deployed EigenLayer contracts in Sepolia to test the upgrade on AlignedLayer Contracts. | ||
| > [!NOTE] | ||
| > EigenLayer Sepolia contracts information is available in `contracts/script/output/sepolia/eigenlayer_deployment_output.json`. | ||
| > [!NOTE] | ||
| > You can find a guide on how to Deploy the contracts [here](./2_deploy_contracts.md). | ||
| This guide is for Whitelisting Operators using a Multisig wallet. If you deployed the contract without a Multisig wallet, you can follow the [Whitelist Operators](./5_a_whitelist_operators.md) tutorial. | ||
| In this guide we add and remove Operators from Aligned's Whitelist using a multisig wallet. | ||
| ## Prerequisites | ||
| - You need to have installed | ||
| - git | ||
| - make | ||
| - [jq](https://jqlang.github.io/jq/download/) | ||
| - Clone the repository | ||
| ``` | ||
| git clone https://github.com/yetanotherco/aligned_layer.git | ||
| ``` | ||
| - Install foundry | ||
| ```shell | ||
| make install_foundry | ||
| foundryup -v nightly-a428ba6ad8856611339a6319290aade3347d25d9 | ||
| ``` | ||
| ## Steps for Whitelisting an Operator | ||
| 1. Propose the transaction with the multisig following the [Propose Whitelist Guide](./5_b_1_propose_whitelist.md). | ||
| 2. After the Whitelist is proposed, multisig participants can approve the whitelist transaction following the [Approve Whitelist Guide](./5_b_2_approve_whitelist.md). | ||
| ## Steps for Removing an Operator | ||
| 1. Propose the transaction with the multisig following the [Propose Remove Whitelist Guide](./5_b_3_propose_remove_whitelist.md). | ||
| 2. After the unpause is proposed, multisig participants can approve the remove following the [Approve Remove Whitelist Guide](./5_b_4_approve_remove_whitelist.md). |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.