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
      • Setting up Block Keeper Node
      • Join DNSP Gossip
      • How does it work?
      • Guide for Block Keeper testing on Shellnet
      • 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

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

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

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.

4. Delegating a License to a BK Wallet

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

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.

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

PreviousHow does it work?NextFormal Verification

Last updated 4 days ago