Kunta v1 Documentation

Last updated: May 24th, 2020

Introducing the AOS protocol

Introducing AOS, a minimal protocol for distributed collaboration

Lean more about AOS here

Downloads

To download Kunta, use the link provided to you. You can also use the cloud-based interface by visiting here. For further assistance, please email team@kunta.io

Download Kunta IDE(Pre-Alpha)

Installing the kunta javascript protocol reference

Local or cloud

To use the platform in the cloud, simply log into your account here. To install the local wallet, install the bundle downloaded from the download section above.

If downloaded run the following in the root directory:

npm install

Why use Kunta?

Kunta is a flexible protocol for designing, maintaining, and interacting with custom cryptoeconomies.

Developer Benefits
  • Customize your cryptoeconomy
  • Developer Friendly
  • Simulation environment for debugging & experimentation
  • Rapid Development
  • Monitoring & Analytic tools
  • Quick set-up & tear-down
  • Publish your chain template for others to use in our marketplace
Business Benefit
  1. Deploy one of our chain templates, or choose a template created by another developer from our marketplace
  2. Quick Setup
    • Setup Guide
    • Option to have us host/maintain your chain
    • No-commitment playground to test our platform before commiting

Kuntac Compiler

To execute Kunta scripts, you must download the Kuntac compiler from here. This compiles all Chain, Root, and Aspect scripts..

Download Compiler (Pre-Alpha)
Compilation Instructions


kuntac -o target <optional flags> <script to compile>.kscript

                                      
Compilation Output

$tree
.
├── <script name>.kscript
└── target
   ├── <script name>.abi
   ├── <script name>.bin
    ...
                                      

Blockchain Configuration

Kunta is used to create, and manage a cryptoeconomy. For this, we expose a simple, and familiar abstraction language.

Note:

You can use our cloud provided IDE or download the compiler for the language, and test your programs locally. Click here to view the compiler on github.

Structure of configuring a chain

import <Roots to include>;

Blockchain <Blockchain Name>(<modules to use>) {

  this.consensus = <Consensus Mechanism to use>;

  ## Native Creation function
  func Create(Config i, Status s){
    <invoked once time, upon chain creation>
  };

  ## Native OnNewBlock function
  func OnNewBlock(<Block information passed>){
    <Invoked for every new blocked commited>
  }

}

                                        
Root Data Type

import <Aspect to be imported>;

Root <Root Name>(<modules to be important, usually "Aspect">){

  name = = <human-readable type>;
  access = <access type>;
  code = <logic for root to perform>;
  return = <return instructions>;

  AddAspect(<Aspect to be imported>);

}
                                        
Aspect Data Type

Aspect <Aspect Name>{

  description = <human-readable description>;
  default_value = <initial value, upon new female root instance>;

}
                                      
Hello Chain
This is the simplest chain configuration to make



Blockchain B1(Consensus, Root) {

  this.consensus = Consensus.POW;

  func Create(Config i, Status s){
    log("created...");
    return True;
  };

  func testFunc(Block b){
    Nonce answer = (b.nonce);
    return answer;
  }

  func OnNewBlock(Block b, Hash h){
    log("i wrote a new block: "+b.id+" : "+h);
    Int number_result = testFunc(b);
    log(number_result);
  }

}

                                      
Scripting Root Instances
To create a new root instance within the abstraction language, create a male or female root instance, and pass the Root for the instance to abide by. This creates a new female instance


RootInstance test_female = Female(<Root to follow>, <Additional parameters>);

                                      
This creates a corresponding male root instance, of which will invoke the previous female root instance.


RootInstance test_male = Male(test_female, <Additional parameters>);

                                      
Chain Operations

Since a chain is a native data type, we can execute upon it.

B1.start();

B1.send(<Root Instance binary>);

Kunode command-line interface

To execute upon the scrips compiled, kunode is used to create a chain from the "Blockchain" configuration..

Download Kunode
Create a chain from the configuration


kunode.Chain(<binary from chain configuration compilation>)

                                      

This registers a new chain to be deployed, by kunode.Deploy



kunode.Deploy(<name of chain to deploy>)

                                      
To submit a new root instance


kunode.RootInstance(<binary from root instance compilation>)

                                      

Receive all updates from The Kunta Project