Difference between revisions of "NodeCore 0.4.9 ReleaseNotes"

From Veriblock Wiki
Jump to: navigation, search
 
Line 24: Line 24:
  
  
* The command "settxfee" has been updated. From now on, if you want to set a fee of 1000 VeriBlock atomic units, you should use the command "settxfee 1000" instead of "settxfee 0.00001000"
+
* The command "settxfee" has been updated to use atomic units for consistency. From now on, if you want to set a fee of 1000 VeriBlock atomic units, you should use the command "settxfee 1000" instead of "settxfee 0.00001000"
 
** See: [[NodeCore_CommandLine#settxfee]]
 
** See: [[NodeCore_CommandLine#settxfee]]
 
* The command rebroadcasttransactionfromtxid <txid> has been added, this command can be used to rebroadcast a transaction from a transaction id.
 
* The command rebroadcasttransactionfromtxid <txid> has been added, this command can be used to rebroadcast a transaction from a transaction id.

Latest revision as of 17:03, 16 June 2020

See: ReleaseNotes

New or updated wiki pages


Bootstrap Downloader

  • The default directory where the bootstrap-downloader will download the block files has been updated, from now it will download the blocks files into the nodecore/bin folder from the distributed package.
  • The downloader will ensure that all the downloaded files are consistent, in case of an integrity issue, the downloader will re-download the file automatically.
  • The downloader is now able to handle the update/down-times from the remote host, and hence, it will stop its progress and re-start the download process after a fixed time

NodeCore

  • Significantly reduced the logs verbosity during the synchronization process.
  • Implemented ability to take the fees from the output(s) in a transaction.

NodeCore CLI

  • The command "settxfee" has been updated to use atomic units for consistency. From now on, if you want to set a fee of 1000 VeriBlock atomic units, you should use the command "settxfee 1000" instead of "settxfee 0.00001000"
  • The command rebroadcasttransactionfromtxid <txid> has been added, this command can be used to rebroadcast a transaction from a transaction id.
  • The command rebroadcasttransactionsfromaddress <address> <index (optional)> has been added, this command can be used to rebroadcasts all pending transactions from a particular source address (optionally above a particular signature index), and all dependent transactions.
  • The command "getdebuginfo <network (optional)> <network_data_folder(optional)> <nodecore_folder(optional)>" has been added, this command can be used to collect information for troubleshooting, this command will output a file "getdebuginfo.json" which will contain all the collected debug information, by default the file will be stored inside the network folder.
    • By default, the command will use mainnet as the <network> parameter, the nodecore folder which is inside the distributed package as the <nodecore_folder> parameter and the nodecore/bin/mainnet folder as the <network_data_folder> parameter.

VeriBlock PoP Miner

Stability

  • Fixed a bug that allowed multiple BTC endorsement transactions to be created at once and caused the BTC wallet to be unstable. Only one BTC endorsement will be broadcasted concurrently now.
  • Each PoP Mining operation has been divided into substeps.
    • Each PoP Mining operation substep will be reattempted up to 10 times when they have an error from which they can recover.
    • Each PoP Mining operation substep has a timeout set, giving us the guarantee that there will never be operations stuck in the RUNNING state forever.
    • Each PoP Mining operation substep has its own description and attached data, so that the `listoperations` and `getoperation` commands and the operation-related HTTP API endpoints will now offer more meaningful data.
  • Fixed multiple bitcoinJ thread-context warnings

Clarity

  • Payout detection implemented. From now the PoP miner will tell you whether or not each of your Mining Operations has been paid out and how many VBKs were rewarded for their endorsement.
    • Fixed memory leak in the new payout detection feature
  • More meaningful logging. There's less noise and more valuable information such as the BTC transaction fees.
  • Added extra log file containing only error-level logs.

Configuration Rework

  • Flexible format, supporting old .properties format up to HOCON/JSON (https://github.com/lightbend/config/blob/master/HOCON.md)
  • For the sake of stability, the `setconfig` command and the PUT config HTTP API endpoint no longer alter the current runtime state, they will only modify the config file. A PoP miner restart is needed for the changes to apply. However:
    • Added getautomine, setautomine <1/2/3/4> <true/false>, getmaxfee, setmaxfee <amount>, getfeeperkb and setfeeperkb <amount> commands. These commands change the runtime values, but not the configuration file.
    • Added GET/PUT `/api/config/automine` and GET/PUT `/api/config/btc-fee` HTTP API endpoints. These endpoints change the runtime values, but not the configuration file.
  • The next environment variable are now usable to configure the miner: NODECORE_IP, NODECORE_PORT, NODECORE_NETWORK
  • From now 'application-default.conf' will be included on the package by default

New commands and endpoints

  • Added the command: 'getoperationlogs <id> <log-level (optional)>'
  • Added the endpoint: operations/<id>/logs
    • This command/endpoint can be used to retrieve all the logs for the supplied operation
  • The APIs are now using swagger, all the API documentation will be displayed on the API url (http://localhost:8080/api by default)
  • Added the command 'canceloperation <id>'
  • Added the endpoint 'operations/<id>/cancel'
    • This command/endpoint cancels the operation for the supplied operation

Code

The amount of actual code has been reduced greatly and overall it has become easier to understand, welcoming more open-source community collaboration.

We have also added a /metrics endpoint in the HTTP API, so that you can collect metrics from your mining sessions. Some of the included metrics are:

  • Started operations count
  • Completed operations count
  • Failed operations count
  • Spent fees count
  • Mining rewards count
  • Total time in each mining stage

How to Update Your VeriBlock PoP Miner Installations

Update Your Config to Match the New Names

The configuration property names have changed, as well as the configuration file name. 'ncpop.properties' is no longer used; the new configuration file name is 'application.conf'. Sample new config in the known format:

vpm.nodeCoreRpc.host = 127.0.0.1
vpm.nodeCoreRpc.port = 10500
vpm.nodeCoreRpc.ssl = false
vpm.bitcoin.network = mainnet
vpm.bitcoin.maxFee = 8000
vpm.bitcoin.feePerKB = 20000
vpm.bitcoin.enableMinRelayFee = true
vpm.bitcoin.useLocalhostPeer = false
vpm.httpApiPort = 8080
vpm.autoMine.round1 = false
vpm.autoMine.round2 = false
vpm.autoMine.round3 = false
vpm.autoMine.round4 = false

Same sample config in the modern format:

vpm {
  nodeCoreRpc {
    host = 127.0.0.1
    port = 10500
    ssl = false
  }
  bitcoin {
    network = mainnet
    maxFee = 8000
    feePerKB = 20000
    enableMinRelayFee = true
    useLocalhostPeer = false
  }
  httpApiPort = 8080
  autoMine {
    round1 = false
    round2 = false
    round3 = false
    round4 = false
  }
}

Both formats are allowed, or even a mix of them in the same file. It is up to each user's preferences.

Update your scripts

If your scripts relied on setting to config for changing the fees or the automine settings on runtime, that will no longer work. Instead, you should use the new commands/endpoints described in the Template:Section link section.

Example to enable automine round 4:

  • Command:
setautomine 4 true
  • HTTP API:
PUT <host>:<port>/api/config/automine with body: '{"round1":"false","round2":"false","round3":"false","round4": "true"}'

Example to set max fee:

  • Command:
setmaxfee 3000
  • HTTP API:
PUT <host>:<port>/api/config/btc-fee with body: '{"maxFee":"3000","feePerKB":"10000"}'

These calls will not alter the contents of your configuration file, only the runtime values. This way, each setting is more clearly handled on runtime and we're leaving more clarity on which settings had no runtime edit support.