cli

command module
v0.0.0-...-a7e7b69 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 2, 2020 License: MPL-2.0 Imports: 17 Imported by: 0

README

Overview

The Marconi CLI Client (mCLI) is the main entry point to interacting with the Marconi software components. It is a user friendly command line tool that provides the functionality of a wallet as well as interaction with the Marconi Net contracts.

Usage

Marconi CLI (mCLI) client can be started with the console, used to help to start background processes or to download packages.

To start mCLI in console mode, it needs to be run with the console runtime flag.

$ ./mcli -console
>

To start any meaningful interaction with the functionality of the different installed modes the client must first be switched to a mode. This can be done with the jump command.

> j credential
credential>

At anytime, tab can be pressed to display a suggestions list.
A more extensive example of using mCLI to create an account, create a Marconi subnet and more can be found in our wiki

Execution Mode

mCLI can also be run with the execution flag. This allows you to run any commands without entering into console mode. Commands can be run in the form:

Current Modes Supported:

  • credential
  • net

(process related commands are handled by daemon mode)

$ ./mcli --mode=exec --command="<mode><command>"
$ ./mcli --mode=exec --command="credential account list"
$ ./mcli --mode=exec --command="net create"

Multiple commands can be run at once, separate each command with a ;

$ ./mcli --mode=exec --command="credential account create --password test; credential account list"

Modes

At this moment mCLI is released with the following modes:


credential

This mode helps users create and manage the different aspects of a Marconi Account.

credential>
             account  Account related commands  
             key      Key related commands      
             home     Return to home menu       
             exit     Exit mcli                 
account

Account is a credential submode, with the following commands

credential> account
                     create   Create account                                         
                     unlock   Unlock account                                         
                     list     List accounts                                          
                     send     Send a transaction                                     
                     balance  Get balance for an account                             
                     receipt  Get receipt for a transaction                          
                     export   Export GO Marconi Keystore associate with an account
account create

Creates a new Marconi account.

credential> account create [Optional: --password <PASSWORD> | --password-file <PASSWORD_FILE>]

Optional

  • --password <PASSWORD> Password can optionally be provided on the command line (if not, the user will be prompted)
  • --password-file <PASSWORD_FILE> Path to a file containing the password that can be optionally provided. (if not, the user will be prompted)
account unlock

Unlocks a given Marconi account.

credential> account unlock <0xACCOUNT_ADDRESS> [Optional: --password <PASSWORD> | --password-file <PASSWORD_FILE>]
  • <0xACCOUNT_ADDRESS> The Marconi address of the account to unlock.
    Optional:
  • --password <PASSWORD> Password can optionally be provided on the command line (if not, the user will be prompted)
  • --password-file <PASSWORD_FILE> Path to a file containing the password that can be optionally provided. (if not, the user will be prompted)
account list

Lists all available accounts to use from mCLI.

credential> account list
account send

Sends Marcos from your account to a target account.

credential> account send <0xACCOUNT_ADDRESS> <0xTARGET_ADDRESS> <AMOUNT_IN_MARCOS> <GAS_LIMIT> <GAS_PRICE> [Optional: --password <PASSWORD> | --password-file <PASSWORD_FILE> | --skip-prompts]
  • <0xACCOUNT_ADDRESS> Your Marconi address to send Marcos from.
  • <0xTARGET_ADDRESS> The target Marconi address to send Marcos to.
  • <AMOUNT_IN_MARCOS> The amount of Marcos to send.
  • <GAS_LIMIT> The upper limit in gas to spend on this value transfer tx.
  • <GAS_PRICE> The price per unit of gas in Gauss you are willing to pay.

Optional:

  • --password <PASSWORD> Password can optionally be provided on the command line (if not, the user will be prompted)
  • --password-file <PASSWORD_FILE> Path to a file containing the password that can be optionally provided. (if not, the user will be prompted)
  • --skip-prompts Indicates that prompts should be skipped (ie. Confirmations) and defaults used instead
account balance

Checks the Marcos balance of a given account.

credential> account balance <0xACCOUNT_ADDRESS>
  • <0xACCOUNT_ADDRESS> The Marconi address whose balance will be returned.
account receipt

Returns the receipt of a transaction by transaction hash.

credential> account receipt <0xTRANSACTION_HASH>
  • <0xTRANSACTION_HASH> The transaction hash of the transaction whose receipt will be returned.
account export

Exports the Marconi keystore file stored in the account file

credential> account export <0xACCOUNT_ADDRESS> <GO-MARCONI_DATA_DIR_PATH>
  • <0xACCOUNT_ADDRESS> The Marconi address of the account to be exported.
  • <GO-MARCONI_DATA_DIR_PATH> The directory where the Marconi account file is stored.
credential> key

Key is a credential submode, with the following commands

credential> key
                 generate  Generate nodekey                        
                 use       Set nodekey to use with other commands  
                 export    Export nodekey                          
                 list      List nodekeys                           
key generate

Generates a new Marconi node key.

credential> key generate <0xACCOUNT_ADDRESS> [Optional: --password <PASSWORD> | --password-file <PASSWORD_FILE>]
  • <0xACCOUNT_ADDRESS> The Marconi address to generate a new node key for.

Optional:

  • --password <PASSWORD> Password can optionally be provided on the command line (if not, the user will be prompted)
  • --password-file <PASSWORD_FILE> Path to a file containing the password that can be optionally provided. (if not, the user will be prompted)
key use

Set the Marconi node key to use with other commands.

credential> key use <0xACCOUNT_ADDRESS> [Optional: --password <PASSWORD> | --password-file <PASSWORD_FILE> | --node-key <NODE_KEY> (Default 0) | --skip-prompts]
  • <0xACCOUNT_ADDRESS> The Marconi address to acquire node key from

Optional:

  • --password <PASSWORD> Password can optionally be provided on the command line (if not, the user will be prompted)
  • --node-key <NODE_KEY> Set the node key to be used (other wise user will be prompted for it)
  • --skip-prompts Optional flag to indicate if prompts should be skipped and defaults used instead (if --node-key is not present 0 will be set for this value)
key export

Exports a node key from the account file to public/private key files.

credential> key export <0xACCOUNT_ADDRESS> [Optional: --password <PASSWORD> | --password-file <PASSWORD_FILE>]
  • <0xACCOUNT_ADDRESS> The Marconi address whose node keys to export.

Optional:

  • --password <PASSWORD> Password can optionally be provided on the command line (if not, the user will be prompted)
  • --password-file <PASSWORD_FILE> Path to a file containing the password that can be optionally provided. (if not, the user will be prompted)
net

This mode helps users manage a Marconi subnet.
NOTE: net use command must first be used to set the Marconi subnet on which the other commands will operate on

net>
      peer    Peer related commands                   
      util    Utility commands                        
      use     Set network to use with other commands  
      create  Create new network                      
      delete  Delete existing network                 
      join    Join an existing network                
      info    Get network info
      home    Return to home menu
      exit    Exit mcli                 

use

Set the Marconi subnet to the one provided. All Marconi Net commands will be operated on the subnet set by this command.

net> use <0xNETWORK_CONTRACT_ADDRESS>
  • <0xNETWORK_CONTRACT_ADDRESS> The address of the network contract to be interacted with.
peer

Peer is a net submode, with the following commands

net> peer
           add              Add peer to a network       
           remove           Remove peer from a network  
           add_relation     Add peer relation           
           remove_relation  Remove peer relationship    
           relations        Get node relationships      
           info             Get node info               

peer add

Adds a peer to the Marconi subnet

net> peer add <PEER_NODE_ID>
  • <PEER_NODE_ID> The node id of the peer that will be added to the Marconi subnet.
peer remove

Removes a peer from the Marconi subnet

net> peer remove <PEER_NODE_ID>
  • <PEER_NODE_ID> The node id of the peer that will be removed from the Marconi subnet.
peer add_relation

Adds a relationship between two peers in the Marconi subnet. This relationship dictates that a mPipe will be created between the two nodes.

net> peer add_relation <PEER_NODE_ID> <OTHER_PEER_NODE_ID>
  • <PEER_NODE_ID> The node id of one peer in the relationship.
  • <OTHER_PEER_NODE_ID> The node id of the the other peer in the relationship.
peer remove_relation

Removes an existing relationship between two peers in the Marconi subnet. This will cause the mPipe between the two nodes to be destroyed.

net> peer remove_relation <PEER_NODE_ID> <OTHER_PEER_NODE_ID>
  • <PEER_NODE_ID> The node id of one peer in the relationship.
  • <OTHER_PEER_NODE_ID> The node id of the the other peer in the relationship.
peer relations

Prints all relationships the given peer is in.

net> peer relations <PEER_NODE_ID>
  • <PEER_NODE_ID> The node id of the peer whose relationships are to be printed.
peer info

Prints information about this peer. Ex: The peer's relationships, assigned IP address...

net> peer info <PEER_NODE_ID>
  • <PEER_NODE_ID> The node id of the peer whose details are to be printed.
util

Util is a net submode, with the following commands

net> util
           generate_32bitkey  Generate a 32 bit key  
           register           Register a nodeID      
util generate_32bitkey

Generates a 32 bit key. Can be used as a subnet identifer

net> util generate_32bitkey [Optional: --path <PATH> | --skip-prompts]

Optional:

  • --path <PATH> The path to save the key to, if not present (and --skip-prompts not present) the user will be prompted
  • --skip-prompts Indicates that all prompts should be skipped and defaults used if flags aren't set
create

Deploys a new network contract, effectively creating a new Marconi subnet. The address invoking this function call will become the admin of this new network.

net> create
delete

Removes the reference of this network contract from the network manager contract.

net> delete <0xNETWORK_CONTRACT_ADDRESS>
  • <0xNETWORK_CONTRACT_ADDRESS> The address of the network contract to be removed.
join

Join updates the configuration to join the specified network. This will not work if the node is not actually a part of the network.

net> join <0xNETWORK_CONTRACT_ADDRESS>
  • <0xNETWORK_CONTRACT_ADDRESS> The address of the network contract that this node is a part of.
info

Prints information about a specific network.

net> info <0xNETWORK_CONTRACT_ADDRESS>
  • <0xNETWORK_CONTRACT_ADDRESS> The address of the network contract to print information for.
process

Used to start processes as background daemons.

process>
      start    Start a process and manage its lifetime                 
      stop     Stop a managed process  
      restart  Restart a managed process                      
      list     List running processes
      version  Show version of each component                     
      home     Return to home menu
      exit     Exit mcli
start

Starts the process specified

process> start <process_name>
  • <process_name> is one of gmeth, middleware or marconid
stop

Stops the process specified

process> stop <process_name>
  • <process_name> is one of gmeth, middleware or marconid
restart

Restarts the process specified

process> restart <process_name>
  • <process_name> is one of gmeth, middleware or marconid
version

Shows the version of each component

process> version
list

Lists running processes and their status (ie. STOPPED/RUNNING)

process> list

Design

The mCLI is comprised of the following components:

REPL Console

The capabilities of the REPL Console (Read-Evaluate-Print Loop) is largely dependent on the plugins the users choose to install with mCLI.
The goal is to have a multipurpose CLI client whose functionality can be expanded on easily.
Integration with plugins is not yet complete but will be released soon. However the current iteration of the codebase has been designed with this goal kept in mind.

Package Manager

The package manager helps to download extra dependencies or packages that mCLI can run. The downloaded packages are configured through packages_conf.json.
Here is a sample snippet:

{
  "Version": "0.1.878",
  "Packages" : [
    {
      "Id": "marconid",
      "Dir": "./",
      "Source": "https://download.marconi.org/deployment/components/marconid/0.1.1063/marconid_linux.tar.gz",
      "Version": "0.1.1063",
      "VersionFile": "etc/marconid/version.txt"
    },

    ...

  ]
}

In this snippet, the package manager is configured to download the marconid package and will extract it to the directory ./

Process Manager

The process manager runs processes Here is a sample snippet:

{
  "Version": "0.0.1",
  "Processes" : [   
    {
      "Id": "marconid",
      "Dependencies": ["meth", "middleware"],
      "Dir": "./bin",
      "Source": "",
      "Version": "",
      "Command": "./marconid",
      "Arguments": ["/opt/marconi/etc/marconid/l2.key", "/opt/marconi/etc/marconid/block/basebeacon_cluster1"],
      "LogFilename": "marconid.log",
      "WaitForCompletion": false,
      "PidFilename": "marconid.pid"
    }
  ]
}

In this snippet, the process manager is configured to run ./marconid in the ./bin directory with the arguments /opt/marconi/etc/marconid/l2.key, /opt/marconi/etc/marconid/block/basebeacon_cluster1 and it's output to stdout is logged to marconid.log.

Middleware Client

The middleware client is used to interface with the Marconi middleware. The middleware client sends JSON RPC over http to the locally running middleware process.

Documentation

The Go Gopher

There is no documentation for this package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL