Difference between revisions of "HowTo Setup vBFI"

From Veriblock Wiki
Jump to: navigation, search
Line 22: Line 22:
 
vBFI is contained within NodeCore. It is an optional plugin, not run by default (to conserve resources).
 
vBFI is contained within NodeCore. It is an optional plugin, not run by default (to conserve resources).
  
It is available with 0.4.13-rc8 and later (TODO - this is a pre-release)
+
It is available with 0.4.13-rc8 and later (TODO - this is a pre-release). Requires both NodeCore, and NodeCore CLI (older versions of NC_CLI may not return the new fields)
  
 
# Run a full nodecore instance: [[NodeCore_QuickStart]]
 
# Run a full nodecore instance: [[NodeCore_QuickStart]]

Revision as of 21:14, 29 November 2021

See: Main_Page

Background

vBFI provides the equivalent number of bitcoin confirmations that a VeriBlock block has.

A 3rd Party requires a certain number of confirmations. In general, a higher number of confirmations corresponds to more security. But the tradeoff is longer wait times.

vBFI provides the best of both worlds:

  1. Less wait time: About 2 hours worth of wait time
  2. More security: Bitcoin level security

Useful links:

How to set up

vBFI is contained within NodeCore. It is an optional plugin, not run by default (to conserve resources).

It is available with 0.4.13-rc8 and later (TODO - this is a pre-release). Requires both NodeCore, and NodeCore CLI (older versions of NC_CLI may not return the new fields)

  1. Run a full nodecore instance: NodeCore_QuickStart
  2. Open up port 4567 for bfi
  3. Add file bfi.conf
  4. In nodecore.properties, set bfi.enabled=true

If you run getdiagnosticinfo, you will see this flag enabled.

bfi.conf

bfi {
    blockChainNetwork = mainnet
    nodeCoreRpcHost = "127.0.0.1:10500"
    httpApiBindPort = 4567
    httpApiNotificationsTest = true
    forkThreatThreshold = 2
    forkThreatRatioThreshold = 0.8
}

nodecore.properties

# Enable BFI
bfi.enabled=true

Get results

bitcoinConfirmations for each transaction

This is available per transaction via the bitcoinConfirmations field:

gettransactions 2AB3811FD0EDE3B3F89A50926B15AA4C0C2370A4467E6670635A19E5A1CD3AF3 5000

...
"bitcoinConfirmations": 4,
...

There is also a JavaScript sample to call the http api for gettransactions:

https://github.com/VeriBlock/nodecore-js/blob/master/packages/core/example/3_get_bfi_score.js

API results

Two supported APIs are:

#Summary ping that 
<instance>/api/ping

#detailed chain data
<instance>/api/chains

End-to-end example

If a transaction occurs in block 2713020, and the UI control shows that has "BTC+3", that is equivalent to "3 bitcoin confirmations".

For example, if a service required "3 bitcoin confirmations" worth of security to deposit a bitcoin... then that service would want "BTC+3".

Vbfi ui control.png

When checking the specific transaction, it would also show "BTC+3".

Gettx.png

Docker setup

version: '3'
services:
  nodecore:
    container_name: nodecore
    image: docker-internal.veriblock.com/nodecore:0.4.13-rc.8
    expose:
      - 7500 # p2p
      - 10500 # rpc
      - 10600 # api
      - 4567 # bfi
    ports:
      - "7501:7501"
      - "10500:10500"
      - "127.0.0.1:10600:10600"
      - "127.0.0.1:4567:4567"
    volumes:
      - /root/VeriBlock:/data:Z
    environment:
      - NODECORE_LOG_PATH=/data/logs/
      - NODECORE_LOG_LEVEL=INFO

^ In the above case configuration needs to be placed in /root/VeriBlock