Guide for Block Keeper testing on Shellnet

Test joining the protocol

1. Obtaining the License Owner's Key Pair

Go to the Acki Nacki staging dashboard.

Follow the instructions in the License Dashboard Guide to obtain the License Owner's key pair.

Save the generated key pair in the License.keys.json file. You will need it later to manage the License contracts.

2. Gaining Access to the User's License Contracts

The License Owner should send their public key to a GOSH representative via Telegram.

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

To deploy the BK wallet, follow the instructions in the Deployment Guide.

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

4. Delegating a License to a BK Wallet

To delegate a license, a License Owner should call the addBKWallet(uint256 pubkey) method in a License contract 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.

5. Staking

Only after completing all previous steps can the Node Owner run the staking script.

Last updated