/qubic-cli

An intermediate tool to communicate to qubic core node.

Primary LanguageC++

qubic-cli

Qubic Core client

An intermediate tool to communicate to qubic core node.

./qubic-cli [basic config] [Command] [command extra parameters]
-help print this message
Basic config:
	-conf <file>
		Specify configuration file. Relative paths will be prefixed by datadir location. See qubic.conf.example.
		Notice: variables in qubic.conf will be overrided by values on parameters.
	-seed <SEED>
		55-char seed private key
	-nodeip <IPv4_ADDRESS>
		IP address of the target node for querying blockchain information (default: 127.0.0.1)
	-nodeport <PORT>
		Port of the target node for querying blockchain information (default: 21841)
	-scheduletick <TICK_OFFSET>
		Offset number of scheduled tick that will perform a transaction (default: 20)
Command:
[WALLET COMMAND]
	-showkeys
		Generating identity, pubkey key from private key. Private key must be passed either from params or configuration file.
	-getbalance <IDENTITY>
		Balance of an identity (amount of qubic, number of in/out txs)
	-getasset <IDENTITY>
		Print a list of assets of an identity
	-sendtoaddress <TARGET_IDENTITY> <AMOUNT>
		Perform a standard transaction to sendData <AMOUNT> qubic to <TARGET_IDENTITY>. A valid private key and node ip/port are required.
	-sendtoaddressintick <TARGET_IDENTITY> <AMOUNT> <TICK>
		Perform a standard transaction to sendData <AMOUNT> qubic to <TARGET_IDENTITY> in a specific <TICK>. A valid private key and node ip/port are required.
	-qutilsendtomanyv1 <FILE>
		Performs multiple transaction within in one tick. <FILE> must contain one ID and amount (space seperated) per line. Max 25 transaction. Fees apply! valid private key and node ip/port are required.

[BLOCKCHAIN/PROTOCOL COMMAND]
	-gettickdata <TICK_NUMBER> <OUTPUT_FILE_NAME>
		Get tick data and write it to a file. Use -readtickdata to examine the file. valid node ip/port are required.
	-getquorumtick <COMP_LIST_FILE> <TICK_NUMBER>
		Get quorum tick data, the summary of quorum tick will be printed, <COMP_LIST_FILE> is fetched by command -getcomputorlist. valid node ip/port are required.
	-getcomputorlist <OUTPUT_FILE_NAME>
		Get of the current epoch. Feed this data to -readtickdata to verify tick data. valid node ip/port are required.
	-getnodeiplist
		Print a list of node ip from a seed node ip. Valid node ip/port are required.
	-checktxontick <TICK_NUMBER> <TX_ID>
		Check if a transaction is included in a tick. valid node ip/port are required.
	-checktxonfile <TX_ID> <TICK_DATA_FILE>
		Check if a transaction is included in a tick (tick data from a file). valid node ip/port are required.
	-readtickdata <FILE_NAME> <COMPUTOR_LIST>
		Read tick data from a file, print the output on screen, COMPUTOR_LIST is required if you need to verify block data
	-sendcustomtransaction <TARGET_IDENTITY> <TX_TYPE> <AMOUNT> <EXTRA_BYTE_SIZE> <EXTRA_BYTE_IN_HEX>
		Perform a custom transaction (IPO, querying smart contract), valid private key and node ip/port are required.
	-dumpspectrumfile <SPECTRUM_BINARY_FILE> <OUTPUT_CSV_FILE>
		Dump spectrum file into csv.
	-dumpuniversefile <UNIVERSE_BINARY_FILE> <OUTPUT_CSV_FILE>
		Dump spectrum file into csv.
	-makeipobid <CONTRACT_INDEX> <NUMBER_OF_SHARE> <PRICE_PER_SHARE>
		Participating IPO (dutch auction). valid private key and node ip/port, CONTRACT_INDEX are required.
	-getipostatus <CONTRACT_INDEX>
		View IPO status. valid node ip/port, CONTRACT_INDEX are required.
	-getsysteminfo
		View Current System Status. Includes initial tick, random mining seed, epoch info.
	-publishproposal 
		(on development)

[NODE COMMAND]
	-getcurrenttick
		Show current tick information of a node
	-sendspecialcommand <COMMAND_IN_NUMBER> 
		Perform a special command to node, valid private key and node ip/port are required.	
	-tooglemainaux <MODE_0> <Mode_1> 
		Remotely toogle Main/Aux mode on node,valid private key and node ip/port are required.	
		<MODE_0> and <MODE_1> value are: MAIN or AUX	
	-setsolutionthreshold <EPOCH> <SOLUTION_THRESHOLD> 
		Remotely set solution threshold for future epoch,valid private key and node ip/port are required.	
	-refreshpeerlist
		(equivalent to F4) Remotely refresh the peer list of node, all current connections will be closed after this command is sent, valid private key and node ip/port are required.	
	-forcenexttick
		(equivalent to F5) Remotely force next tick on node to be empty, valid private key and node ip/port are required.	
	-reissuevote
		(equivalent to F9) Remotely re-issue (re-send) vote on node, valid private key and node ip/port are required.	
	-sendrawpacket <DATA_IN_HEX> <SIZE>
		Send a raw packet to nodeip. Valid node ip/port are required.
	-getlogfromnode <PASSCODE_0> <PASSCODE_1> <PASSCODE_2> <PASSCODE_3>
		Fetch a single log line from the node. Valid node ip/port, passcodes are required.
	-synctime
		Sync node time with local time, valid private key and node ip/port are required. Make sure that your local time is synced (with NTP)!	

[QX COMMAND]
	-qxgetfee
		Show current Qx fee.
	-qxissueasset <ASSET_NAME> <NUMBER_OF_UNIT> <UNIT_OF_MEASUREMENT> <NUM_DECIMAL>
		Create an asset via Qx contract.
	-qxtransferasset <ASSET_NAME> <ISSUER_IN_HEX> <NEW_OWNER_IDENTITY> <AMOUNT_OF_SHARE>
		Transfer an asset via Qx contract.
	-qxorder add/remove bid/ask [ISSUER (in qubic format)] [ASSET_NAME] [PRICE] [NUMBER_OF_SHARE]
		Set order on Qx.
	-qxgetorder entity/asset bid/ask [ISSUER/ENTITY (in qubic format)] [ASSET_NAME (NULL for requesting entity)] [OFFSET]
		Get orders on Qx

[QAIRDROP COMMAND]
    -qairdropstartairdrop <ASSET_NAME> <NUMBER_OF_UNIT> <UNIT_OF_MEASUREMENT> <NUM_DECIMAL>
        Create an asset for airdrop via Airdrop contract.
    -qairdroptransferasset <ASSET_NAME> <ISSUER_IN_HEX>
        Transfer an airdrop asset via Airdrop contract.
	-qairdroponetransferasset <ASSET_NAME> <ISSUER_IN_HEX> <NEW_OWNER_IDENTITY> <AMOUNT_OF_SHARE>
		Transfer an asset via Airdrop contract.

[QPOOL COMMAND]
	-qpoolissueasset <ASSET_NAME> <NUMBER_OF_UNIT> <UNIT_OF_MEASUREMENT> <NUM_DECIMAL>
        Create an token via Qpool contract.
	-qpoolenabletoken <Name_OF_TOKEN> <ISSUER_OF_TOKEN>
		Enable a token in Qpool. Users can add the token to Qpool.
	-qpoolgetnumberofenabletoken
		Get the number of enable tokens in Qpool
	-qpoolgetenabletoken <Enalble_Token_NUMBER>
		Get the information of a enable token in Qpool
	-qpoolcreate <NAME_OF_LPTOKEN> <NUMBER_OF_TOKEN> <AMOUNT_OF_QWALLETTOKEN> <WEIGHT_OF_QWALLETTOKEN> <AMOUNT_OF_QU> [<TOKEN1_ID> <TOKEN2_ID>, ... <TOKEN4_ID> (FROM NUMBER_OF_TOKEN)] [<TOKEN1_AMOUNT>, <TOKEN2_AMOUNT>, ... <TOKEN4_AMOUNT> (FROM NUMBER_OF_TOKEN)] [ <TOKEN1_WEIGHT>,<TOKEN2_WEIGHT>, ... <TOKEN4_WEIGHT>  (FROM NUMBER_OF_TOKEN)] <SWAP_FEE>
		Create a new pool. NUMBER_OF_TOKEN including the Qwallet token and qu. the number of token id and token amount and token weight following the NUMBER_OF_TOKEN.
	-qpoolgetinfor <POOL_NUMBER>
		Get the information of a pool
	-qpoolswap <AMOUNT_OF_TOKEN1> <INDEX_OF_TOKEN1> <INDEX_OF_TOKEN2> <NUMBER_OF_POOL>
		Swap the <INDEX_OF_TOKEN1> to <INDEX_OF_TOKEN2> in <NUMBER_OF_POOL>
	-qpoolbiggetstatus
		current status of calculation for BIG multiprecision
	-qpoolbignumbertostring <BIG_NUMBER>
		<BIG_NUMBER> is bit256
	-qpoolbigstringtonumber <LENGTH_OF_STRINGNUMBER> [<FIRST_NUM>, <SECOND_NUM>, ... <LENGH - 1>]
		<LENGTH_OF_STRINGNUMBER> is length of string number.
		<FIRST_NUM>, <SECOND_NUM> are each number of string number
	-qpoolbigplus <LENGTH_OF_STRINGNUMBER_A> [<FIRST_NUM_A>, <SECOND_NUM_A>, ... <LENGH - 1>] <LENGTH_OF_STRINGNUMBER_B> [<FIRST_NUM_B>, <SECOND_NUM_B>, <LENGH - 1>]
		<LENGTH_OF_STRINGNUMBER_A> is length of string number A.
		<LENGTH_OF_STRINGNUMBER_B> is length of string number B.
	-qpoolbigminus  <LENGTH_OF_STRINGNUMBER_A> [<FIRST_NUM_A>, <SECOND_NUM_A>, ... <LENGH - 1>] <LENGTH_OF_STRINGNUMBER_B> [<FIRST_NUM_B>, <SECOND_NUM_B>, <LENGH - 1>]
		<LENGTH_OF_STRINGNUMBER_A> is length of string number A.
		<LENGTH_OF_STRINGNUMBER_B> is length of string number B.
	-qpoolbigmultiple <LENGTH_OF_STRINGNUMBER_A> [<FIRST_NUM_A>, <SECOND_NUM_A>, ... <LENGH - 1>] <LENGTH_OF_STRINGNUMBER_B> [<FIRST_NUM_B>, <SECOND_NUM_B>, <LENGH - 1>]
		<LENGTH_OF_STRINGNUMBER_A> is length of string number A.
		<LENGTH_OF_STRINGNUMBER_B> is length of string number B.
	-qpoolbigmodulus <LENGTH_OF_STRINGNUMBER_A> [<FIRST_NUM_A>, <SECOND_NUM_A>, ... <LENGH - 1>] <LENGTH_OF_STRINGNUMBER_B> [<FIRST_NUM_B>, <SECOND_NUM_B>, <LENGH - 1>]
		<LENGTH_OF_STRINGNUMBER_A> is length of string number A.
		<LENGTH_OF_STRINGNUMBER_B> is length of string number B.
	-qpoolbigorequalcomparison <LENGTH_OF_STRINGNUMBER_A> [<FIRST_NUM_A>, <SECOND_NUM_A>, ... <LENGH - 1>] <LENGTH_OF_STRINGNUMBER_B> [<FIRST_NUM_B>, <SECOND_NUM_B>, <LENGH - 1>]
		<LENGTH_OF_STRINGNUMBER_A> is length of string number A.
		<LENGTH_OF_STRINGNUMBER_B> is length of string number B.
	-qpoolsmallorequalcomparison <LENGTH_OF_STRINGNUMBER_A> [<FIRST_NUM_A>, <SECOND_NUM_A>, ... <LENGH - 1>] <LENGTH_OF_STRINGNUMBER_B> [<FIRST_NUM_B>, <SECOND_NUM_B>, <LENGH - 1>]
		<LENGTH_OF_STRINGNUMBER_A> is length of string number A.
		<LENGTH_OF_STRINGNUMBER_B> is length of string number B.
	-qpoolbigcomparison <LENGTH_OF_STRINGNUMBER_A> [<FIRST_NUM_A>, <SECOND_NUM_A>, ... <LENGH - 1>] <LENGTH_OF_STRINGNUMBER_B> [<FIRST_NUM_B>, <SECOND_NUM_B>, <LENGH - 1>]
		<LENGTH_OF_STRINGNUMBER_A> is length of string number A.
		<LENGTH_OF_STRINGNUMBER_B> is length of string number B.
	-qpoolsmallcomparison <LENGTH_OF_STRINGNUMBER_A> [<FIRST_NUM_A>, <SECOND_NUM_A>, ... <LENGH - 1>] <LENGTH_OF_STRINGNUMBER_B> [<FIRST_NUM_B>, <SECOND_NUM_B>, <LENGH - 1>]
		<LENGTH_OF_STRINGNUMBER_A> is length of string number A.
		<LENGTH_OF_STRINGNUMBER_B> is length of string number B.

[QTRY COMMAND]
	-qtrygetfee
		Show current qtry fee.
	-qtryissuebet
		Issue a bet (prompt mode)
	-qtrygetactivebet
		Show all active bet id.
	-qtrygetactivebetbycreator <BET_CREATOR_ID>
		Show all active bet id of an ID.
	-qtrygetbetinfo <BET_ID>
		Get meta information of a bet
	-qtrygetbetdetail <BET_ID> <OPTION_ID>
		Get a list of IDs that bet on <OPTION_ID> of the bet <BET_ID>
	-qtryjoinbet <BET_ID> <NUMBER_OF_BET_SLOT> <AMOUNT_PER_SLOT> <PICKED_OPTION>
		Join a bet
	-qtrypublishresult <BET_ID> <WIN_OPTION>
		(Oracle providers only) publish a result for a bet
	-qtrycancelbet <BET_ID>
		(Game operator only) cancel a bet

BUILD

mkdir build;
cd build;
cmake ../;
make;

USAGE

To get current tick of a node:

./qubic-cli -nodeip 127.0.0.1 -getcurrenttick

example return:

Tick: 10660587
Epoch: 82
Number Of Aligned Votes: 0
Number Of Misaligned Votes: 0

Dump publickey, privatekey and identity: ./qubic-cli -seed aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -showkeys

example return:

Seed: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Private key: 62506d370a4e9f42720269c0c973a544de0b6559bda46d1d8dd2fcda9fe4fada
Public key: 1f590d03e613bdded38b4c0820ac44615f91af12435980b3ede3c08c315a2544
Identity: BZBQFLLBNCXEMGLOBHUVFTLUPLVCPQUASSILFABOFFBCADQSSUPNWLZBQEXK

Send coin:

./qubic-cli -nodeip 127.0.0.1 -seed aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -sendtoaddress AFZPUAIYVPNUYGJRQVLUKOPPVLHAZQTGLYAAUUNBXFTVTAMSBKQBLEIEPCVJ 1

Send special command to node:

./qubic-cli -nodeip 127.0.0.1 -seed aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -sendspecialcommand 123

Dump tick data to a file:

./qubic-cli -nodeip 127.0.0.1 -gettickdata 10600000 10600000.bin

Read tick data file:

./qubic-cli -readtickdata 10600000.bin

Check tx on tick data file:

./qubic-cli -checktxonfile TX_HASH 10600000.bin

Check tx on online:

./qubic-cli -nodeip 127.0.0.1 -checktxontick 10600000 TX_HASH

More information, please read the help. ./qubic-cli -help

NOTE: PROPER ACTIONS are needed if you use this tool as a replacement for qubic wallet. Please use it with caution.