diff --git a/.github/workflows/contract-verify.yml b/.github/workflows/contract-verify.yml
new file mode 100644
index 000000000..d73cea5dd
--- /dev/null
+++ b/.github/workflows/contract-verify.yml
@@ -0,0 +1,44 @@
+# This workflow uses actions that are not certified by GitHub.
+# They are provided by a third-party and are governed by
+# separate terms of service, privacy policy, and support
+# documentation.
+
+name: ContractVerify
+
+on:
+ push:
+ branches: [ "main", "develop" ]
+ paths:
+ - 'src/contracts/*.h'
+ - '!src/contracts/math_lib.h'
+ - '!src/contracts/qpi.h'
+ - '!src/contracts/TestExample*.h'
+ - '.github/workflows/contract-verify.yml'
+ pull_request:
+ branches: [ "main", "develop" ]
+ paths:
+ - 'src/contracts/*.h'
+ - '!src/contracts/math_lib.h'
+ - '!src/contracts/qpi.h'
+ - '!src/contracts/TestExample*.h'
+ - '.github/workflows/contract-verify.yml'
+
+jobs:
+ contract_verify_job:
+ runs-on: ubuntu-latest
+ timeout-minutes: 15 # Sometimes the parser can get stuck
+ name: Verify smart contract files
+ steps:
+ # Checkout repo to use files of the repo as input for container action
+ - name: Checkout
+ uses: actions/checkout@v4
+ - name: Find all contract files to verify
+ id: filepaths
+ run: |
+ files=$(find src/contracts/ -maxdepth 1 -type f -name "*.h" ! -name "*TestExample*" ! -name "*math_lib*" ! -name "*qpi*" -printf "%p\n" | paste -sd, -)
+ echo "contract-filepaths=$files" >> "$GITHUB_OUTPUT"
+ - name: Contract verify action step
+ id: verify
+ uses: Franziska-Mueller/qubic-contract-verify@v1.0.3
+ with:
+ filepaths: '${{ steps.filepaths.outputs.contract-filepaths }}'
diff --git a/.github/workflows/efi-build-develop.yml b/.github/workflows/efi-build-develop.yml
index f91e345bb..70a7a1730 100644
--- a/.github/workflows/efi-build-develop.yml
+++ b/.github/workflows/efi-build-develop.yml
@@ -8,8 +8,12 @@ name: EFIBuild
on:
push:
branches: [ "main", "develop" ]
+ paths-ignore:
+ - 'doc/**'
pull_request:
branches: [ "main", "develop" ]
+ paths-ignore:
+ - 'doc/**'
env:
# Path to the solution file relative to the root of the project.
diff --git a/.gitignore b/.gitignore
index bf4f57667..08ddaaaad 100644
--- a/.gitignore
+++ b/.gitignore
@@ -13,3 +13,22 @@ x64/
.DS_Store
.clang-format
tmp
+
+# Build directories and temporary files
+out/build/
+**/Testing/Temporary/
+**/_deps/googletest-src
+test/CMakeLists.txt
+test/CMakeLists.txt
+comp.md
+proposal.md
+src/Qubic.vcxproj
+.claude/settings.local.json
+src/Qubic.vcxproj
+test/CMakeLists.txt
+ANALISIS_STATUS_3.md
+.gitignore
+node.md
+report.md
+claude.md
+RESUMEN_REVISION.md
diff --git a/README.md b/README.md
index 168fd9060..8d3a3bcaa 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,5 @@
# qubic - node
-Qubic Node Source Code - this repository contains the source code of a full qubic node.
+Qubic Core Node Source Code - this repository contains the source code of a full qubic node.
> MAIN (current version running qubic)
> [](https://github.com/qubic/core/actions/workflows/efi-build-develop.yml)
@@ -9,13 +9,14 @@ Qubic Node Source Code - this repository contains the source code of a full qubi
## Prerequisites
To run a qubic node, you need the following spec:
-- Bare Metal Server/Computer with at least 8 Cores (high CPU frequency with AVX2 support). AVX-512 support is recommended; check supported CPUs [here](https://www.epey.co.uk/cpu/e/YTozOntpOjUwOTc7YToxOntpOjA7czo2OiI0Mjg1NzUiO31pOjUwOTk7YToyOntpOjA7czoxOiI4IjtpOjE7czoyOiIzMiI7fWk6NTA4ODthOjY6e2k6MDtzOjY6IjQ1NjE1MCI7aToxO3M6NzoiMjM4Nzg2MSI7aToyO3M6NzoiMTkzOTE5OSI7aTozO3M6NzoiMTUwMjg4MyI7aTo0O3M6NzoiMjA2Nzk5MyI7aTo1O3M6NzoiMjE5OTc1OSI7fX1fYjowOw==/)
+- Bare Metal Server/Computer with at least 8 Cores (high CPU frequency with AVX2 support). AVX-512 support is recommended - by the end of 2026 only AVX512 will be supported
+- Recommended CPU: AMD Epyc 9274F or better
- At least 2TB of RAM
- 1Gb/s synchronous internet connection
- A NVME disk to store data (via NVMe M.2)
- UEFI Bios
-> You will need the current `spectrum, universe, and contract` files to be able to start Qubic. The latest files can be found in our #computor-operator channel on the Qubic Discord server: https://discord.gg/qubic (inquire there for the files).
+> You will need the current `spectrum, universe, and contract` files to be able to start Qubic. The latest files can be downloaded from [https://storage.qubic.li/network](https://storage.qubic.li/network) or ask in our #computor-operator channel on the Qubic Discord server: https://discord.gg/qubic.
### Prepare your Disk
1. Your Qubic Boot device should be formatted as FAT32 with the label QUBIC.
@@ -40,16 +41,7 @@ echo -e "o\nY\nd\nn\n\n\n+200G\n\nt\n\nef00\nw\nY" | gdisk /dev/sda
```
/contract0000.XXX
/contract0001.XXX
-/contract0002.XXX
-/contract0003.XXX
-/contract0004.XXX
-/contract0005.XXX
-/contract0006.XXX
-/contract0007.XXX
-/contract0008.XXX
-/contract0009.XXX
-/contract0010.XXX
-/contract0011.XXX
+/contractYYYY.XXX
/spectrum.XXX
/system
/universe.XXX
@@ -60,17 +52,7 @@ echo -e "o\nY\nd\nn\n\n\n+200G\n\nt\n\nef00\nw\nY" | gdisk /dev/sda
```
- contract0000.XXX => must be the current contract #0 file. XXX must be replaced with the current epoch. (e.g. `contract0000.114`)
- contract0001.XXX => must be the current contract #1 file. XXX must be replaced with the current epoch. (e.g. `contract0001.114`). Data from Qx.
-- contract0002.XXX => must be the current contract #2 file. XXX must be replaced with the current epoch. (e.g. `contract0002.114`). Data from Quottery.
-- contract0003.XXX => must be the current contract #3 file. XXX must be replaced with the current epoch. (e.g. `contract0003.114`). Data from Random.
-- contract0004.XXX => must be the current contract #4 file. XXX must be replaced with the current epoch. (e.g. `contract0004.114`). Data from QUtil.
-- contract0005.XXX => must be the current contract #5 file. XXX must be replaced with the current epoch. (e.g. `contract0005.114`). Data from MyLastMatch.
-- contract0006.XXX => must be the current contract #6 file. XXX must be replaced with the current epoch. (e.g. `contract0006.114`). Data from GQMPROPO.
-- contract0007.XXX => must be the current contract #7 file. XXX must be replaced with the current epoch. (e.g. `contract0007.114`). Data from Swatch.
-- contract0008.XXX => must be the current contract #8 file. XXX must be replaced with the current epoch. (e.g. `contract0008.114`). Data from CCF.
-- contract0009.XXX => must be the current contract #9 file. XXX must be replaced with the current epoch. (e.g. `contract0009.114`). Data from QEarn.
-- contract0010.XXX => must be the current contract #10 file. XXX must be replaced with the current epoch. (e.g. `contract0010.114`). Data from QVault.
-- contract0011.XXX => must be the current contract #10 file. XXX must be replaced with the current epoch. (e.g. `contract0011.114`). Data from MSVault.
-- Other contract files with the same format as above. For now, we have 6 contracts.
+- contractYYYY.XXX => must be the current contract #YYYY file. XXX must be replaced with the current epoch. (e.g. `contract0002.114`). State data from all contracts.
- universe.XXX => must be the current universe file. XXX must be replaced with the current epoch. (e.g `universe.114`)
- spectrum.XXX => must be the current spectrum file. XXX must be replaced with the current epoch. (e.g `spectrum.114`)
- system => to start from scratch, use an empty file. (e.g. `touch system`)
@@ -97,19 +79,21 @@ Qubic.efi
> To make it easier, you can copy & paste our prepared initial disk from https://github.com/qubic/core/blob/main/doc/qubic-initial-disk.zip
-> If you have multiple network interfaces, you may disconnect these before starting qubic.
+> If you have multiple network interfaces, you may disconnect these before starting qubic. [Here you see how](https://github.com/qubic/integration/blob/main/Computor-Setup/Disconnect-Unneeded-Devices.md).
### Prepare your Server
To run Qubic on your server you need the following:
- UEFI Bios
- Enabled Network Stack in Bios
- Your USB Stick/SSD should be the boot device
+- We advice to not disable any CPU virtualization or multi threading
## General Process of deploying a node
1. Find knownPublicPeers public peers (e.g. from: https://app.qubic.li/network/live)
-2. Set the needed parameters inside src/private_settings.h (https://github.com/qubic/core/blob/main/src/private_settings.h)
-3. Compile Source to EFI
-4. Start EFI Application on your Computer
+2. Set the needed parameters inside [src/private_settings.h](https://github.com/qubic/core/blob/main/src/private_settings.h)
+3. Compile Source to EFI (Release build)
+4. Copy the binary to your server
+5. Start your server with the EFI Application
## How to run a Listening Node
@@ -128,12 +112,12 @@ static unsigned char computorSeeds[][55 + 1] = {
};
```
2. Add your Operator Identity.
-The Operator Identity is used to identify the Operator. The Operator can send Commands to your Node.
+The Operator Identity is used to identify the Operator. Many remote commands are only allowed when they are signed by the Operator seed. Use the [CLI](https://github.com/qubic/qubic-cli) to send remote commands.
```c++
#define OPERATOR "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
```
3. Add static IPs of known public peers (can be obtained from https://app.qubic.li/network/live).
-Ideally, add at least 4 including your own IP.
+Ideally, add at least 4. Include also the public IP of your server. This IP Address will be propagated to other Qubic nodes.
```c++
static const unsigned char knownPublicPeers[][4] = {
{12,13,14,12}
@@ -162,7 +146,9 @@ We cannot support you in any case. You are welcome to provide updates, bug fixes
## More Documentation
- [How to contribute](doc/contributing.md)
-- [Developing a smart contract ](doc/contracts.md)
+- [Developing a smart contract](doc/contracts.md)
- [Qubic protocol](doc/protocol.md)
- [Custom mining](doc/custom_mining.md)
- [Seamless epoch transition](SEAMLESS.md)
+- [Proposals and voting](doc/contracts_proposals.md)
+
diff --git a/cli.md b/cli.md
new file mode 100644
index 000000000..7d1de0fea
--- /dev/null
+++ b/cli.md
@@ -0,0 +1,440 @@
+./qubic-cli [basic config] [command] [command extra parameters]
+-help print this message
+
+Basic config:
+ -conf
+ 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
+ 55-char seed for private key
+ -nodeip
+ IP address of the target node for querying blockchain information (default: 127.0.0.1)
+ -nodeport
+ Port of the target node for querying blockchain information (default: 21841)
+ -scheduletick
+ Offset number of scheduled tick that will perform a transaction (default: 20)
+ -force
+ Do action although an error has been detected. Currently only implemented for proposals.
+ -enabletestcontracts
+ Enable test contract indices and names for commands using a contract index parameter. This flag has to be passed before the contract index/name. The node to connect to needs to have test contracts running.
+ -print-only
+ Print the raw transaction data without sending it to the network. Useful for offline signing or broadcasting later.
+Commands:
+
+[WALLET COMMANDS]
+ -showkeys
+ Generate identity, public key and private key from seed. Seed must be passed either from params or configuration file.
+ -getbalance
+ Balance of an identity (amount of qubic, number of in/out txs)
+ -getasset
+ Print a list of assets of an identity
+ -queryassets
+ Query and print assets information. Skip arguments to get detailed documentation.
+ -gettotalnumberofassetshares
+ Get total number of shares currently existing of a specific asset.
+ -sendtoaddress
+ Perform a standard transaction to sendData qubic to . A valid seed and node ip/port are required.
+ -sendtoaddressintick
+ Perform a standard transaction to sendData qubic to in a specific . A valid seed and node ip/port are required.
+
+[QUTIL COMMANDS]
+ -qutilsendtomanyv1
+ Performs multiple transaction within in one tick. must contain one ID and amount (space seperated) per line. Max 25 transaction. Fees apply! Valid seed and node ip/port are required.
+ -qutilburnqubic
+ Performs burning qubic, valid seed and node ip/port are required.
+ -qutilburnqubicforcontract
+ Burns qubic for the specified contract index, valid seed and node ip/port are required.
+ -qutilqueryfeereserve
+ Queries the amount of qubic in the fee reserve of the specified contract, valid node ip/port are required.
+ -qutildistributequbictoshareholders
+ Distribute QU among shareholders, transferring the same amount of QU for each share. The fee is proportional to the number of shareholders. The remainder that cannot be distributed equally is reimbursed.
+ -qutilsendtomanybenchmark
+ Sends transfers of 1 qu to addresses in the spectrum. Max 16.7M transfers total. Valid seed and node ip/port are required.
+ -qutilcreatepoll
+ Create a new poll. is the poll's name (32 bytes), is 1 for Qubic or 2 for Asset, is the minimum vote amount, is a 256-byte GitHub link. For Asset polls (type 2), provide a semicolon-separated list of assets in the format 'asset_name,issuer;asset_name,issuer'. Valid seed and node ip/port are required.
+ -qutilvote
+ Vote in a poll. is the poll's ID, is the vote amount, and is the selected option (0-63). Valid seed and node ip/port are required.
+ -qutilgetcurrentresult
+ Get the current results of a poll. is the poll's ID. Valid node ip/port are required.
+ -qutilgetpollsbycreator
+ Get polls created by a specific user. is the creator's identity. Valid node ip/port are required.
+ -qutilgetcurrentpollid
+ Get the current poll ID and list of active polls.
+ -qutilgetpollinfo
+ Get information about a specific poll by its ID.
+ -qutilcancelpoll
+ Cancel a poll by its ID. Only the poll creator can cancel it. Requires seed and node ip/port.
+ -qutilgetfee
+ Show current QUTIL fees.
+
+[BLOCKCHAIN/PROTOCOL COMMANDS]
+ -gettickdata
+ Get tick data and write it to a file. Use -readtickdata to examine the file. valid node ip/port are required.
+ -getquorumtick
+ Get quorum tick data, the summary of quorum tick will be printed, is fetched by command -getcomputorlist. valid node ip/port are required.
+ -getcomputorlist
+ Get computor list 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.
+ -gettxinfo
+ Get tx infomation, will print empty if there is no tx or invalid tx. valid node ip/port are required.
+ -checktxontick
+ Check if a transaction is included in a tick. valid node ip/port are required.
+ -checktxonfile
+ Check if a transaction is included in a tick (tick data from a file). valid node ip/port are required.
+ -readtickdata
+ Read tick data from a file, print the output on screen, COMPUTOR_LIST is required if you need to verify block data
+ -sendcustomtransaction
+ Perform a custom transaction (IPO, querying smart contract), valid seed and node ip/port are required.
+ -dumpspectrumfile
+ Dump spectrum file into csv.
+ -dumpuniversefile
+ Dump universe file into csv.
+ -dumpcontractfile
+ Dump contract file into csv. Current supported CONTRACT_ID: 1-QX
+ -makeipobid
+ Participating IPO (dutch auction). valid seed and node ip/port, CONTRACT_INDEX are required.
+ -getipostatus
+ View IPO status. valid node ip/port, CONTRACT_INDEX are required.
+ -getactiveipos
+ View list of active IPOs in this epoch. valid node ip/port are required.
+ -getsysteminfo
+ View Current System Status. Includes initial tick, random mining seed, epoch info.
+
+[NODE COMMANDS]
+ -getcurrenttick
+ Show current tick information of a node
+ -sendspecialcommand
+ Perform a special command to node, valid seed and node ip/port are required.
+ -togglemainaux
+ Remotely toggle Main/Aux mode on node, valid seed and node ip/port are required.
+ and value are: MAIN or AUX
+ -setsolutionthreshold
+ Remotely set solution threshold for future epoch, valid seed 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 seed and node ip/port are required.
+ -forcenexttick
+ (equivalent to F5) Remotely force next tick on node to be empty, valid seed and node ip/port are required.
+ -reissuevote
+ (equivalent to F9) Remotely re-issue (re-send) vote on node, valid seed and node ip/port are required.
+ -sendrawpacket
+ Send a raw packet to nodeip. Valid node ip/port are required.
+ -synctime
+ Sync node time with local time, valid seed and node ip/port are required. Make sure that your local time is synced (with NTP)!
+ -getminingscoreranking
+ Get current mining score ranking. Valid seed and node ip/port are required.
+ -getvotecountertx
+ Get vote counter transaction of a tick: showing how many votes per ID that this tick leader saw from (-675-3) to (-3)
+ -setloggingmode
+ Set console logging mode: 0 disabled, 1 low computational cost, 2 full logging. Valid seed and node ip/port are required.
+ -savesnapshot
+ Remotely trigger saving snapshot, valid seed and node ip/port are required.
+ -setexecutionfeemultiplier
+ Set the multiplier for the conversion of raw execution time to contract execution fees to ( NUMERATOR / DENOMINATOR ), valid seed and node ip/port are required.
+ -getexecutionfeemultiplier
+ Get the current multiplier for the conversion of raw execution time to contract execution fees, valid seed and node ip/port are required.
+
+[SMART CONTRACT COMMANDS]
+ -callcontractfunction
+ Call a contract function of contract index and print the output. Valid node ip/port are required.
+ -invokecontractprocedure
+ Invoke a procedure of contract index. Valid seed and node ip/port are required.
+ -setshareholderproposal
+ Set shareholder proposal in a contract. May overwrite existing proposal, because each seed can have only one proposal at a time. Costs a fee. You need to be shareholder of the contract.
+ is explained if there is a parsing error. Most contracts only support "Variable|2" (yes/no proposals to change state variable).
+ -clearshareholderproposal
+ Clear own shareholder proposal in a contract. Costs a fee.
+ -getshareholderproposals
+ Get shareholder proposal info from a contract.
+ Either pass "active" to get proposals that are open for voting in the current epoch, or "finished" to get proposals of previous epochs not overwritten or cleared yet, or a proposal index.
+ -shareholdervote
+ Cast vote(s) for a shareholder proposal in the contract. You need to be shareholder of the contract.
+ may be a single value to set all your votes (one per share) to the same value.
+ In this case, is the option in range 0 ... N-1 or "none" (in usual case of option voting), or an arbitrary integer or "none" (if proposal is for scalar voting).
+ also may be a comma-separated list of pairs of count and value (for example: "3,0,10,1" meaning 3 votes for option 0 and 10 votes for option 1).
+ If the total count is less than the number of shares you own, the remaining votes will be set to "none".
+ -getshareholdervotes [VOTER_IDENTITY]
+ Get shareholder proposal votes of the contract. If VOTER_IDENTITY is skipped, identity of seed is used.
+ -getshareholderresults
+ Get the current result of a shareholder proposal.
+
+[QX COMMANDS]
+ -qxgetfee
+ Show current Qx fee.
+ -qxissueasset
+ Create an asset via Qx contract.
+ -qxtransferasset
+ 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
+ -qxtransferrights
+ Transfer asset management rights of shares from QX to another contract.
+ can be given as name or index.
+ You need to own/possess the shares to do this (seed required).
+
+[QTRY COMMANDS]
+ -qtrygetbasicinfo
+ Show qtry basic info from a node.
+ -qtryissuebet
+ Issue a bet (prompt mode)
+ -qtrygetactivebet
+ Show all active bet id.
+ -qtrygetactivebetbycreator
+ Show all active bet id of an ID.
+ -qtrygetbetinfo
+ Get meta information of a bet
+ -qtrygetbetdetail
+ Get a list of IDs that bet on of the bet
+ -qtryjoinbet
+ Join a bet
+ -qtrypublishresult
+ (Oracle providers only) publish a result for a bet
+ -qtrycancelbet
+ (Game operator only) cancel a bet
+
+[GENERAL QUORUM PROPOSAL COMMANDS]
+ -gqmpropsetproposal
+ Set proposal in general quorum proposals contract. May overwrite existing proposal, because each computor can have only one proposal at a time. For success, computor status is needed.
+ is explained if there is a parsing error.
+ -gqmpropclearproposal
+ Clear own proposal in general quorum proposals contract. For success, computor status is needed.
+ -gqmpropgetproposals
+ Get proposal info from general quorum proposals contract.
+ Either pass "active" to get proposals that are open for voting in the current epoch, or "finished" to get proposals of previous epochs not overwritten or cleared yet, or a proposal index.
+ -gqmpropvote
+ Vote for proposal in general quorum proposals contract.
+ is the option in range 0 ... N-1 or "none".
+ -gqmpropgetvote [VOTER_IDENTITY]
+ Get vote from general quorum proposals contract. If VOTER_IDENTITY is skipped, identity of seed is used.
+ -gqmpropgetresults
+ Get the current result of a proposal (general quorum proposals contract).
+ -gqmpropgetrevdonation
+ Get and print table of revenue donations applied after each epoch.
+
+[CCF COMMANDS]
+ -ccfsetproposal
+ Set proposal in computor controlled fund (CCF) contract. May overwrite existing proposal, because each seed can have only one proposal at a time. Costs a fee.
+ is explained if there is a parsing error. Only "Transfer|2" (yes/no transfer proposals) are allowed in CCF.
+ For subscription proposals, append subscription parameters to PROPOSAL_STRING: |||. The AMOUNT in the transfer proposal is used as AMOUNT_PER_PERIOD.
+ To cancel the active subscription, or or should be zero.
+ -ccfclearproposal
+ Clear own proposal in CCF contract. Costs a fee.
+ -ccfgetproposals
+ Get proposal info from CCF contract.
+ Either pass "active" to get proposals that are open for voting in the current epoch, or "finished" to get proposals of previous epochs not overwritten or cleared yet, or a proposal index.
+ -ccfgetsubscription
+ Get active subscription info for a specific destination from CCF contract.
+ -ccfvote
+ Cast vote for a proposal in the CCF contract.
+ is the option in range 0 ... N-1 or "none".
+ -ccfgetvote [VOTER_IDENTITY]
+ Get vote from CCF contract. If VOTER_IDENTITY is skipped, identity of seed is used.
+ -ccfgetresults
+ Get the current result of a CCF proposal.
+ -ccflatesttransfers
+ Get and print latest transfers of CCF granted by quorum.
+ -ccfgetregularpayments
+ Get and print regular payments (subscription payments) made by CCF contract.
+
+[QEARN COMMANDS]
+ -qearnlock
+ lock the qu to Qearn SC.
+ -qearnunlock
+ unlock the qu from Qearn SC, unlock the amount of that locked in the epoch .
+ -qearngetlockinfoperepoch
+ Get the info(Total locked amount, Total bonus amount) locked in .
+ -qearngetuserlockedinfo
+ Get the locked amount that the user locked in the epoch .
+ -qearngetstateofround
+ Get the status(not started, running, ended) of the epoch .
+ -qearngetuserlockstatus
+ Get the status(binary number) that the user locked for 52 weeks.
+ -qearngetunlockingstatus
+ Get the unlocking history of the user.
+ -qearngetstatsperepoch
+ Get the Stats(early unlocked amount, early unlocked percent) of the epoch and Stats(total locked amount, average APY) of QEarn SC
+ -qearngetburnedandboostedstats
+ Get the Stats(burned amount and average percent, boosted amount and average percent, rewarded amount and average percent in QEarn SC) of QEarn SC
+ -qearngetburnedandboostedstatsperepoch
+ Get the Stats(burned amount and percent, boosted amount and percent, rewarded amount and percent in epoch ) of QEarn SC
+
+[QVAULT COMMANDS]
+ -qvaultsubmitauthaddress
+ Submit the new authaddress using multisig address.
+ -qvaultchangeauthaddress
+ Change the authaddress using multisig address. is the one of (1, 2, 3).
+ -qvaultsubmitfees
+ Submit the new permilles for QcapHolders, Reinvesting, Development using multisig address. the sum of 3 permilles should be 970 because the permille of shareHolder is 30.
+ -qvaultchangefees
+ Change the permilles for QcapHolders, Reinvesting, Development using multisig address. the sum of 3 permilles should be 970 because the permille of shareHolder is 30. Get the locked amount that the user locked in the epoch .
+ -qvaultsubmitreinvestingaddress
+ Submit the new reinvesting address using multisig address.
+ -qvaultchangereinvestingaddress
+ Change the address using multisig address. should be already submitted by -qvaultsubmitreinvestingaddress command.
+ -qvaultsubmitadminaddress
+ Submit the admin address using multisig address.
+ -qvaultchangeadminaddress
+ Change the admin address using multisig address. should be already submitted by -qvaultsubmitadminaddress command.
+ -qvaultgetdata
+ Get the state data of smart contract. anyone can check the changes after using the any command.
+ -qvaultsubmitbannedaddress
+ Submit the banned address using multisig address.
+ -qvaultsavebannedaddress
+ Save the banned address using multisig address. should be already submitted by -qvaultsubmitbannedaddress command.
+ -qvaultsubmitunbannedaddress
+ Submit the unbanned address using multisig address.
+ -qvaultsaveunbannedaddress
+ Unban the using the multisig address. should be already submitted by -qvaultsaveunbannedaddress command.
+
+[MSVAULT COMMANDS]
+ -msvaultregistervault
+ Register a vault. Vault's number of votes for proposal approval , vault name (max 32 chars), and a list of owners (separated by commas). Fee applies.
+ -msvaultdeposit
+ Deposit qubic into vault given vault ID.
+ -msvaultreleaseto
+ Request release qu to destination. Fee applies.
+ -msvaultresetrelease
+ Reset release requests. Fee applies.
+ -msvaultgetvaults
+ Get list of vaults owned by IDENTITY.
+ -msvaultgetreleasestatus
+ Get release status of a vault.
+ -msvaultgetbalanceof
+ Get balance of a vault.
+ -msvaultgetvaultname
+ Get vault name.
+ -msvaultgetrevenueinfo
+ Get MsVault revenue info.
+ -msvaultgetfees
+ Get MsVault fees.
+ -msvaultgetvaultowners
+ Get MsVault owners given vault ID.
+
+[QSWAP COMMANDS]
+ -qswapgetfee
+ Show current Qswap fees.
+ -qswapissueasset
+ Create an asset via Qswap contract.
+ -qswaptransferasset
+ Transfer an asset via Qswap contract.
+ -qswapcreatepool
+ Create an AMM pool via Qswap contract.
+ -qswapgetpoolbasicstate
+ Get the basic info of a pool, totol liquidity, qu reserved, asset reserved.
+
+ -qswapaddliquidity
+ Add liquidity with restriction to an AMM pool via Qswap contract.
+ -qswapremoveliquidity