# Delegate staking validation rights on Tezos

In Tezos, token holders can delegate their validation rights to other token holders (called validators or bakers) without transferring ownership of their tokens. Unlike other DPoS protocols, the account as a whole is delegated. However, the liquidity is maintained and the tokens can still be transferred, as no freezing periods apply to a delegation.

You can perform the following tasks:

- Delegate validation rights
- Undelegate validation rights


## Prerequisites

To perform staking tasks on Tezos, you need the following:

| Prerequisite | Additional information |
|  --- | --- |
| An account on a Polkadot ledger from which to initiate the transactions | [View account details](/products/custody/v1.15/api/accounting-entities/account/view) |
| Enough funds in the account to cover the transaction fees and the amount | [Check account balances](/products/custody/v1.15/api/accounting-entities/account/balances#check-account-balances) |
| The following new IDs, in a standard UUID format:A transaction order IDAn intent ID |  |


## Delegate or undelegate validation rights

System change process
All new requests to change the system state follow the same process. To familiarize yourself with this process first, follow the [Request a change with an intent](/products/custody/v1.15/resources/tutorials/intent) tutorial.

To delegate or undelegate validation rights, follow the steps in [Request a change with an intent](/products/custody/v1.15/resources/tutorials/intent), with a payload similar to one of the following examples.

### Payload examples

#### Delegate validation rights


```json
{
"payload": {
    "id": "953d75b2-e384-46e9-8a72-a1ce753a50e2",
    "accountId": "953d75b2-e384-46e9-8a72-a1ce753a50e2",
    "parameters": {
        "operation": {
			"destination": {
				"address": "tz1b9jT9tp1XxNe8n2WgxnWKwup4rxGaHLhV",
				"type": "Address"
					},
			"type": "Delegation"
				},
        "feeStrategy": {
            "priority": "Low",
            "type": "Priority"
        },
        "maximumFee": "4000",
        "type": "Tezos"
    },
    "description": "",
    "customProperties": {},
    "type": "v0_CreateTransactionOrder"
		}
}
```

Fields of the `payload` block to note are as follows:

| Field | Description |
|  --- | --- |
| `accountId` | Internal account ID of a Tezos account in Ripple Custody. |
| `operation.destination` | Address to which to delegate validation rights. |
| `operation.type` | `Delegation` |
| `parameters.feeStrategy` | The fee strategy to use for the transaction. For more information, see [Fee strategy and maximum fee](/products/custody/v1.15/overview/blockchain/transactions/transaction-fees#fee-strategy-and-maximum-fee). |
| `parameters.maximumFee` | The maximum fee, in micro tez. For more information, see [Fee strategy and maximum fee](/products/custody/v1.15/overview/blockchain/transactions/transaction-fees#fee-strategy-and-maximum-fee). |
| `parameters.type` | Ledger type, in this case `Tezos`. |
| `type` | `v0_CreateTransactionOrder` |


#### Undelegate validation rights


```json
{
    "payload": {
        "id": "953d75b2-e384-46e9-8a72-a1ce753a50e2",
        "accountId": "953d75b2-e384-46e9-8a72-a1ce753a50e2",
        "parameters": {
            "operation": {
			    "type": "Undelegation"
            },
            "feeStrategy": {
                "priority": "Low",
                "type": "Priority"
            },
            "maximumFee": "4000",
            "type": "Tezos"
        },
        "type": "v0_CreateTransactionOrder"
    }
}
```

When the transaction order is successfully approved, Ripple Custody does the following:

- Creates a transaction, to broadcast the details and delegate staking to or undelegate staking from the staking pool on the blockchain.
- Creates one or more transfers, to represent the separate amounts associated with the transaction, such as the cryptocurrency amount and the fees.