# validators add

```
lceth validators add [flags]
```

## Options

```
  -o, --operator-idx int       Required operator index on OperatorRegistry contract
  -d, --deposit-data string    JSON deposit data file listing validator keys to be added
  -i, --deposit-input string   Hex input of deposit transaction listing validator keys to be added
      --from address           Optional account used to sign the transaction.
                               Expects an 0x prefixed Ethereum address (default 0x0000000000000000000000000000000000000000)
  -n, --nonce bigInt           Optional nonce to use for the transaction, if not set then use pending nonce.
                               Expects either a decimal or an hex encoded value with 0x prefix
  -v, --value bigInt           Optional funds to transfer along the transaction in Wei, if not set then no funds are transferred
                               Expects either a decimal or an hex encoded value with 0x prefix (default 0x0)
  -p, --gas-price bigInt       Optional gas price to use for the transaction execution in Wei. If not set then uses gas price oracle
                               Expects either a decimal or an hex encoded value with 0x prefix
  -f, --gas-fee-cap bigInt     Optional gas fee cap to use for the EIP-1559 transaction execution in Wei. If not set then uses gas price oracle
                               Expects either a decimal or an hex encoded value with 0x prefix
  -t, --gas-tip-cap bigInt     Optional gas priority tip fee cap to use for the EIP-1559 transaction execution in Wei. If not set then uses gas price oracle
                               Expects either a decimal or an hex encoded value with 0x prefix
  -l, --gas-limit uint         Optional gas limit to set for the transaction execution. If not set then estimate gas
                               Expects either a decimal or an hex encoded value with 0x prefix
      --send                   If set then performs all transaction steps and send the transaction to the network
      --no-sign                If set then performs all transaction steps and stop before signing the transaction
  -h, --help                   help for add
```

## Options inherited from parent commands

```
      --allowlist-addr string            Address of the Allowlist contract [env: ALLOWLIST_ADDR]
      --beacon-deployment-block string   deployment block beacon deposit contract [env: BEACON_DEPLOYMENT_BLOCK]
      --beacon-deposit-addr string       Address of the Beacon Deposit contract [env: BEACON_DEPOSIT_ADDR]
      --deployment-block uint            Deployment block of the contracts [env: DEPLOYMENT_BLOCK]
      --el-fee-recipient-addr string     Address of the Execution Layer fee recipient contract [env: EL_FEE_RECIPIENT_ADDR]
      --eth-el-addr string               JSON-RPC address of the Ethereum execution layer node to connect to [env: ETH_EL_ADDR]
      --healthz-addr string              healthz entrypoint address:port [env: HEALTHZ_ADDR] (default ":8081")
      --keystore-password string         Password used to encrypt key files [env: KEYSTORE_PASSWORD]
      --keystore-path string             Directory where to store keys [env: KEYSTORE_PATH]
      --kms-key-id string                KMS key ID used to sign and submit transactions [env: KMS_KEY_ID]
      --log-format string                Log output format (text or json) [env: LOG_FORMAT] (default "text")
      --log-level string                 Log output level [env: LOG_LEVEL] (default "info")
      --operators-registry-addr string   Address of the Operators Registry contract [env: OPERATORS_REGISTRY_ADDR]
      --oracle-addr string               Address of the Oracle contract [env: ORACLE_ADDR]
      --redeem-manager-addr string       Address of the RedeemManager contract [env: REDEEM_MANAGER_ADDR]
      --river-addr string                Address of the River contract [env: RIVER_ADDR]
      --server-addr string               Server entrypoint address:port [env: SERVER_ADDR] (default ":8080")
      --tlc-addr string                  Address of the TLC contract [env: TLC_ADDR]
      --withdraw-addr string             Address of the Withdraw contract [env: WITHDRAW_ADDR]
      --wls-eth-addr string              Address of the WlsEth contract [env: WLSETH_ADDR]
```

## Example Usage

### Signing with encrypted geth keystore

```
% lceth validators add --operator-idx 0
--deposit-data ~/Downloads/deposit-data.json
--from 0x24f3b2bc10e59c6c2fb4cd1e706e51b977cf4754
--operators-registry-addr 0xAF73C9D8Eb11F54930746e1fC0E68ca3574AE485
--river-addr 0x4558cffD081638E8E791C4183b77d6Fe80E7dF4c
--withdraw-addr 0xd22445dFeB2e394d097DbfBa94270d1E0868d5AE
--redeem-manager-addr 0x33993476440bE94Ef664a7069cd52b928168f053
--oracle-addr 0xdc9fA1e97FF3c097EE47141517479E344f21d1Fc
--el-fee-recipient-addr 0xC26615450c5B81b73D59fE00CCACF47f4C364BC2
--beacon-deposit-addr 0x4242424242424242424242424242424242424242
--deployment-block 2439806
--block-log-fetch-step 10000
--eth-el-addr <ETH_RPC_URL>
--keystore-password <PASSWORD>
--keystore-path ./data/keystore/
--skip-check-duplicates
--send
INFO[0000] initialization succeeded                      addr.allowlist=0x1C8d258846f5e3EaCC0885AD265Fb505c69B600f addr.beacon-deposit=0x4242424242424242424242424242424242424242 addr.el-fee-recipient=0xC26615450c5B81b73D59fE00CCACF47f4C364BC2 addr.operators-registry=0xAF73C9D8Eb11F54930746e1fC0E68ca3574AE485 addr.oracle=0xdc9fA1e97FF3c097EE47141517479E344f21d1Fc addr.river=0x4558cffD081638E8E791C4183b77d6Fe80E7dF4c addr.tlc=0x0000000000000000000000000000000000000000 addr.withdraw=0xd22445dFeB2e394d097DbfBa94270d1E0868d5AE addr.wlseth=0x21ae523bf67C81c8e4F640d8f76F9c7B77eCc0bf beacon-deployment.block=0 chain.id=17000 deployment.block=2439806
INFO[0000] configuring geth keystore                     keystore-path=./data/keystore/
INFO[0000] set signer address                            address=0x24f3b2BC10E59C6c2Fb4CD1e706e51B977CF4754
INFO[0000] reading deposit data file                     file=/Users/alexandermackay/Downloads/deposit-data.json version=v0.30.0-6-ga1a1339
INFO[0000] found deposit data                            keys=2 version=v0.30.0-6-ga1a1339
INFO[0000] adding 2 validators in 1 txs                  version=v0.30.0-6-ga1a1339
INFO[0000] creating tx 1/1 with 2 validators             version=v0.30.0-6-ga1a1339
INFO[0000] validate deposit data...                      expected.amount=32000000000 expected.fork_version=0x01017000 expected.withdrawal_credentials=0x010000000000000000000000d22445dfeb2e394d097dbfba94270d1e0868d5ae
INFO[0000] valid deposit data
INFO[0001] tx 1/1 sent                                   tx_hash=0xda143c3f1a90b4455e2913c2195eebfba53eadf9f90202116ab2bee51df2d55b version=v0.30.0-6-ga1a1339
INFO[0006] waiting for tx 1/1 to be confirmed            timeElapsed=5.00078575s tx_hash=0xda143c3f1a90b4455e2913c2195eebfba53eadf9f90202116ab2bee51df2d55b version=v0.30.0-6-ga1a1339
INFO[0006] tx 1/1 confirmed successfully                 tx_hash=0xda143c3f1a90b4455e2913c2195eebfba53eadf9f90202116ab2bee51df2d55b version=v0.30.0-6-ga1a1339
```

<https://holesky.etherscan.io/tx/0xda143c3f1a90b4455e2913c2195eebfba53eadf9f90202116ab2bee51df2d55b>

### Signing with AWS KMS ECDSA key

```
% lceth validators add --operator-idx 0
--deposit-data ~/Downloads/deposit-data.json
--from 0x348d29b8bfa00ee5d62aa8d4205d72bad1c3cb7c
--operators-registry-addr 0xAF73C9D8Eb11F54930746e1fC0E68ca3574AE485
--river-addr 0x4558cffD081638E8E791C4183b77d6Fe80E7dF4c
--withdraw-addr 0xd22445dFeB2e394d097DbfBa94270d1E0868d5AE
--redeem-manager-addr 0x33993476440bE94Ef664a7069cd52b928168f053
--oracle-addr 0xdc9fA1e97FF3c097EE47141517479E344f21d1Fc
--el-fee-recipient-addr 0xC26615450c5B81b73D59fE00CCACF47f4C364BC2
--beacon-deposit-addr 0x4242424242424242424242424242424242424242
--deployment-block 2439806
--block-log-fetch-step 10000
--eth-el-addr <ETH_RPC_URL>
--kms-key-id <KMS_KEY_ID>
--skip-check-duplicates
--send
```

## SEE ALSO

* [lceth validators](/eth/technical-reference/cli/validators.md) - Methods to manage validators on OperatorsRegistry contract


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.liquidcollective.io/eth/technical-reference/cli/validators/add.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
