Acki Nacki documentation
Acki Nacki docsFor DevelopersWhat is Acki Nacki?
  • Acki Nacki Overview
  • Glossary
  • Launch & Genesis
  • Tokenomics
    • Fee System
  • Protocol participation
    • License
      • Acki Nacki Node License
      • Working with Licenses
      • License Delegation Guide
    • Block Keeper
      • Guide for Block Keeper testing on Shellnet
      • Join DNSP Gossip
      • Setting up Block Keeper Node
      • How to join the protocol as Block Keeper?
      • Formal Verification
        • Block Keeper Contracts Business-Level Specification
        • Block Keeper Contracts High Level Specification
    • Block Manager
      • Setting up Block Manager Node
    • Proxy service
  • Wallet
    • Create Your Wallet
    • ZK Login Authentication Flow
Powered by GitBook
On this page
  1. Protocol participation
  2. Block Keeper

Guide for Block Keeper testing on Shellnet

Test joining the protocol

PreviousBlock KeeperNextJoin DNSP Gossip

Last updated 1 month ago

1. Obtaining the License Owner's Key Pair

Go to the .

Follow the instructions in the 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 .

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

5. Deploying a Block Keeper Wallet with a Whitelist

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.

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

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

Save your BK wallet address, Node ID, and the file containing the BK Node Owner keys — these will be needed to run the staking script.

5. Delegating a License to a BK Wallet

A maximum of 10 licenses can be delegated to a single node.

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"
}

6. Staking

To initiate staking, at least one license must be delegated to the node.

To delegate a license, a License Owner should call the addBKWallet(uint256 pubkey) method in a in each License contract.

Learn more about .

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

Acki Nacki staging dashboard
License Dashboard Guide
Telegram
Deployment Guide
License contract
how to work with licenses
staking script