POST
/ethDerivePreSignedExitMessage
Generate pre-signed exit messages for Ethereum validators. The pre-signed message allows a validator to exit without requiring an immediate on-chain transaction. Validators must all belong to the same account and be active for at least 256 epochs before a pre-signed exit message can be generated.
Specify which validators to exit using the account ID and one of the following methods -
- Public keys: Provide a list of up to 50 validator public keys.
- Validator indexes: Provide a list of validator indexes.
- Account ID & validator count: Specify the number of validators to generate messages for.
- Customer ID & validator count: Specify a customer ID and the number of validators to generate messages for.
Input example: ethDerivePreSignedExitMessage(
account_id=12,
type=EthExitSelectionType.PublicKey,
public_keys=["0xab28...6776a", "0x9f73...5c2d"]
)
Return: JSON containing the pre-signed exit messages for the specified validators.
-------------------- Response --------------------
{
"FunctionData": {
"client_req_id": "79b...c62",
"network": "mainnet",
"data": [
{
"pubkey": "0xab28...6776a",
"validator_index": 10000,
"withdrawal_address": "0x793a...3BEe",
"encrypted_exit_message": "ab28a95b789...",
"fork_version": "00000000",
"status": "ACTIVE"
}
]
},
"Meta": {
"AccessToken": "a3c1...b9f8",
"Destination": "0435...32cf",
"Source": "0f62...69d0",
"Time": "2024-10-30 12:12:00"
}
}
-------------------- Error Reference --------------------
| Error Type | Error Code | Reason / Description |
|---------------------|------------|-------------------------------------------------------------------------------------------------------|
| Python Exception | - | When using selection type 1 (exit by account ID), no other arguments are allowed. |
| Python Exception | - | Validator count is required for selection type 3 (exit by account ID). Acceptable range 1–250. |
| Python Exception | - | Validator public keys are required for selection type 1 (exit by public keys). |
| Python Exception | - | Validator indexes are required for selection type 2 (exit by validator indexes). |
| Python Exception | - | Customer ID is required for selection type 8 (exit by customer ID). |
| Python Exception | - | The provided exit selection type is unsupported. |
| Python Exception | - | Only one argument is allowed for the provided selection type.
account_idinteger<p>The user defined GK8 account ID. The ETH is deposited from this account’s uMPC address to the Galaxy validator(s) account, and withdrawn from this account to the Impenetrable Vault address. The range is limited to the number of user defined accounts.</p>
typeinteger<p>The method used to identify validators for pre-signed exit messages.
1 - <code>PublicKey</code>: Identify by account ID and public keys.
2 - <code>ValidatorIndexes</code>: Identify by account ID and validator indexes.
3 - <code>AccountId</code>: Identify by account ID and validator count.
8 - <code>CustomerId</code>: Identify by account ID, customer ID, and validator count.</p>
public_keysarray<p>(Optional) A list of validator public keys. A maximum of 50 entries are allowed.</p>
validator_indexesarray<p>(Optional) A List of validator indexes.</p>
customer_idstring<p>(Optional) The ID of the customer. Must be used with <code>validator_count</code>.</p>
validator_countinteger<p>(Optional) The number of validators to generate pre-signed exit messages for, can be up to <code>250</code>. Used with "account_id", can be further refined with "customer_id".</p>
acceptstringGenerated from available response content types
200success
curl --request POST \
--url '/ethDerivePreSignedExitMessage?account_id=12&type=1&customer_id=customer-123&validator_count=2' \
--header 'accept: application/json'