A brief description of Locked Token Delegated Key Order [[Locked Token Delegated Key Order (LTDKO)|(LTDKO)]].
[[Locked Token Delegated Key Order (LTDKO)|(LTDKO)]] makes it possible to set up a master node between two parties, who, for whatever reason, cannot set up a master node on their own.
In this guide we will refer to a party with [[Token Delegated (m-token)|m-tokens]] as a staker and a party with a server running Cellframe Node as a validator.
There are two options for **LTDKO**, and they differ in the order in which parties are creating orders and transactions. We will describe both of them.
1. [[Certificate Delegation#Option 1|Option #1]]
2. [[Certificate Delegation#Option 2|Option #2]]
## Option #1
A validator creates a [[Node Command - SRV_STAKE ORDER CREATE VALIDATOR|validator order]]
Next, staker delegates this order by creating a transaction which will lock m-tokens.
### Steps
First, a **validator** creates a [[Node Command - SRV_STAKE ORDER CREATE VALIDATOR|validator order]].
This order states how much `m-tokens` are required from the staker to purchase the order, a `percentage of rewards` that will be shared with a **staker** and specifies a `master node certificate`.
`Command:`
```actionscript
cellframe-node-cli srv_stake order create validator -net <name> -value_min <min_value> -value_max <max_value> -tax <value> -cert <masternode_cert_name>
```
`Examples of correct values format:`
```actionscript
-value_min 10.0e+18
-tax 50.0
```
`Parameters description:`
```actionscript
-net - network name
-value_min - minimum acceptable amount of m-tokens
-value_max - maximum acceptable amount of m-tokens
-tax - percentage of master node earnings that staker will receive
-cert - name of the master node certificate
```
`Command result:`
```actionscript
status: success
order_hash: 0x889DADA18B5AFB8D7FE922E1A10BF5134330E97C9DFA715704B4BA62395ABD1A
```
A result of the `srv_stake order create validator` command is a hash of the created order. This hash needs to be shared with a **staker**.
Next, **staker** creates a [[Node Command - SRV_STAKE DELEGATE|transaction]] using a **validator** `order hash` that will lock his m-tokens.
`Command:`
```actionscript
cellframe-node-cli srv_stake delegate -order <order hash> -tax_addr <wallet address to receive rewards to> -net <name> -w <name of wallet with m-tokens> -fee <value> -value <value>
```
`Examples of correct values format:`
```actionscript
-fee 0.5e+18
-value 10.0e+18
```
`Parameters description:`
```actionscript
-order - hash of the validator order
-tax_addr - wallet address to receive specified percentage of masternode rewards
-net - network name
-w - name of the wallet from which m-tokens will be taken and locked
-fee - transaction fee value
-value - amount of m-tokens to lock. This value must be within the specified range of -value_min and -value_max.
```
`Command result:`
```actionscript
status: success
tx_hash: 0xD583B6F0558ABEAEB2A852F6D06A758874278706685D0A5F988D3DC377EF6812
```
Once **staker** creates a transaction, its hash will be displayed. This transaction hash needs to be sent to the **Cellframe Support** team for the master node approval.
## Option #2
First, **staker** creates a [[Node Command - SRV_STAKE ORDER CREATE STAKER|staker order]] and a transaction which locks [[Token Delegated (m-token)|m-tokens]].
Next, **validator** delegates this order by creating a [[Node Command - SRV_STAKE DELEGATE|transaction]] with specified master node certificate.
### Steps
First, a **stake**r creates an order and a transaction specifying desired `tax percent`, `wallet address` for reward collecting and the `amount of m-tokens` that will be locked.
`Command:`
```actionscript
cellframe-node-cli srv_stake order create staker -net <name> -w <wallet name> -value <value> -tax <percent> -addr <wallet addr> -fee <value>
```
`Examples of correct values format:`
```actionscript
-value 10.0e+18
-tax 50.0
-fee 0.5e+18
```
`Parameters description:`
```actionscript
-net - network name
-w - name of the wallet from which m-tokens will be taken and locked
-value - amount of m-tokens that will be locked
-addr - wallet address for tax collecting
“-addr” parameter can be omitted. If not included, tax will be collected to the wallet specified with -w parameter.
```
`Command result:`
```actionscript
status: success
order_hash: 0xAE311D49593014615291FC124F5F9CC270ECDE93B4E31654A1B47CC2ACC2279B
tx_hash: 0x52F8FA5EBBBE86F05553DD78EB8BA9FCC590DBFC4BCD3D8AB0CE0A290927EB7E
```
A result of the `srv_stake order create staker` command is a hash of the created order and a transaction hash. Order hash needs to be shared with a **validator**.
Next, a **validator** delegates a `master node certificate` using the staker `order hash`.
`Command:`
```actionscript
cellframe-node-cli srv_stake delegate -cert <masternode_cert_name> -order <hash> -net <name> -w <wallet name> -fee <value>
```
`Examples of correct values format:`
```actionscript
-fee 0.5e+18
```
`Parameters description:`
```actionscript
-cert - masternode certificate name
-order - staker order hash
-net - network name
-w - name of the wallet
-fee - transaction fee value
```
`Command result:`
```actionscript
status: success
tx_hash: 0xDB4880B8E524D00201C902DE9BF0B7D2D0ABF65290004BE8C7F3D3ADA3D7C1B2
```
Once **validator** creates a transaction, its hash will be displayed. This transaction hash needs to be sent to the **Cellframe Support** team for master node approval.