# Guide for Block Keeper testing on Shellnet

**1. Obtaining the License Owner's Key Pair**

Go to the [Acki Nacki staging dashboard](https://dashboard-dev.ackinacki.com/).

Follow the instructions in the [License Dashboard Guide](https://docs.ackinacki.com/protocol-participation/license/license-dashboard-guide) to obtain the License Owner's key pair.

{% hint style="info" %}
Save the generated key pair in the `License.keys.json` file. You will need it later to manage the License contracts.
{% endhint %}

**2. Gaining Access to the User's License Contracts**

The License Owner should send their **`public key`** to a GOSH representative via [Telegram](https://t.me/Oxydixi).

The GOSH team will deploy licenses and provide you with the their addresses and unique on-chain numbers.

**3. Deploying a Block Keeper Wallet with a Whitelist**

{% hint style="warning" %}
Before deploying a BK Wallet all the delegating licenses have to be deployed, \
and their on-chain unique numbers have to be collected. \
They will be placed into the wallet's whitelist during deployment.
{% endhint %}

To deploy the BK wallet, follow the instructions in the [Deployment Guide](https://github.com/ackinacki/ackinacki/tree/main?tab=readme-ov-file#block-keeper-wallet-deployment).&#x20;

As a result, you will get something like the following:

```

File ../../../../bk_wallet/master.keys.json not found. Generating master keys...
Deploying wallet...
...
Wallet 0:dac2f1bf07a23e8c85393022de358a017d605ebe930d6dad6fd4777ce5a4c09b is deployed.
License number 6 and license address is 0:7f2f945faaae4cce286299afe74dac9460893dd5cba1ac273b9e91f55f1141ec
License number 7 and license address is 0:deffa917f23c45afb263fadbb08406c2291447017f79f480417ca4de5551d1e2
Current minimum stake is 1 NACKLs
Sending 1 NACKLs
...
Checking wallet balance...
Current wallet balance: 1
Node ID: dac2f1bf07a23e8c85393022de358a017d605ebe930d6dad6fd4777ce5a4c09b
Initial steps have been done. Save your node id
```

{% hint style="warning" %}
Save your BK wallet address —which also serves as the node identifier (without the `0:` prefix)—and the file containing the BK Node Owner keys; you’ll need to run the staking script.
{% endhint %}

**4. Delegating a License to a BK Wallet**

{% hint style="warning" %}
A maximum of 20 (twenty) licenses can be delegated to a single node.
{% endhint %}

To delegate a license, a License Owner should call the `addBKWallet(uint256 pubkey)` method in a [License contract](https://github.com/ackinacki/ackinacki/blob/main/contracts/bksystem/License.sol) in each License contract.

Where:

`pubkey` - the BK Node Owner's pubkey.

Example of calling the method:

```

tvm-cli -j callx --addr 0:7f2f945faaae4cce286299afe74dac9460893dd5cba1ac273b9e91f55f1141ec --abi acki-nacki/contracts/bksystem/License.abi.json --keys license_owner_keys/license.keys.json --method addBKWallet '{"pubkey": "0xfa4edc8b63c4e66241a57c11e0a522769ca4a4f106692512fc92f2d658169bcc"}'
```

**You can check the delegation status by calling the `getBK()` method in the License contract.**

Example command:

```

tvm-cli -j runx --addr 0:7f2f945faaae4cce286299afe74dac9460893dd5cba1ac273b9e91f55f1141ec --abi acki-nacki/contracts/bksystem/License.abi.json --method getBK
```

The method will return the BK wallet address to which the license has been delegated:

```
{
  "bkwallet": "0:dac2f1bf07a23e8c85393022de358a017d605ebe930d6dad6fd4777ce5a4c09b"
}
```

or `null` if no delegation has occurred:

```
{
  "bkwallet": null
}
```

You can obtain the on-chain unique number of the License by calling the `getDetails()` method in the License contract:

```
tvm-cli -j runx --addr 0:deffa917f23c45afb263fadbb08406c2291447017f79f480417ca4de5551d1e2 --abi acki-nacki/contracts/bksystem/License.abi.json --method getDetails
```

result:

```
{
    "license_number": "0x0000000000000000000000000000000000000000000000000000000000000007",
    "bkwallet": "0:dac2f1bf07a23e8c85393022de358a017d605ebe930d6dad6fd4777ce5a4c09b",
    "owner_pubkey": "0x90f19f961898d394f68151a756140942767a91e354607f24150d180de1a085d7",
    "owner_address": null,
    "reputationTime": "0"
}
```

**Learn more about** [**how to work with licenses**](/for-node-owners/protocol-participation/block-keeper/license/working-with-licenses.md)**.**

**5. Block Keeper Deployment and Staking**

Only after completing all previous steps can the Node Owner begin [deploying the node software and starting staking.](broken://spaces/yPWnJ1v4nIPgOrEhPVrK)

{% hint style="warning" %}
To initiate staking, at least one license must be delegated to the node.
{% endhint %}


---

# 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.ackinacki.com/for-node-owners/protocol-participation/block-keeper/guide-for-block-keeper-testing-on-shellnet.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.
