Difference between revisions of "HowTo run PoP Miner"

From Veriblock Wiki
Jump to: navigation, search
(Created page with " See: Main_Page __TOC__ == Overview == Proof-of-Proof (PoP) mining is what ultimately endorses the VeriBlock blockchain using Bitcoin's OP_RETURN, and thereby allows an...")
 
 
(62 intermediate revisions by 7 users not shown)
Line 1: Line 1:
  
See: [[Main_Page]]
+
See: [[Main_Page]], [[PoP_Miner_CommandLine]], [[PoP_Transaction_LifeCycle]], [[PoP_Miner_Rewards]], [[PoP_Reward_Summary]], [[SegWit_PoP_Miner]]
  
 
__TOC__
 
__TOC__
Line 6: Line 6:
 
== Overview ==
 
== Overview ==
  
Proof-of-Proof (PoP) mining is what ultimately endorses the VeriBlock blockchain using Bitcoin's OP_RETURN, and thereby allows an altchain to have Bitcoin-level security through VeriBlock. It is different than Proof-of-Work mining, which collects valid transactions into a block and adds that block to the blockchain.
+
The Proof-of-Proof (PoP) consensus protocol enables a security inheriting blockchain (VeriBlock) to inherit the complete proof-of-work of a security providing blockchain (Bitcoin). For a deeper understanding of the PoP consensus protocol, please refer to the [https://www.veriblock.org/wp-content/uploads/2018/03/PoP-White-Paper.pdf PoP White Paper].
  
== Prerequisites ==
+
A PoP miner serves as the communication and transactional bridge between the VeriBlock blockchain and the Bitcoin blockchain. As often as they wish, a PoP miner will take the most recent blockchain state data from the VeriBlock blockchain, along with an identification of the miner, and publish it to the Bitcoin blockchain via a transaction containing an OP_RETURN with the embedded data. The PoP miner then waits for the transaction to be included in a Bitcoin block. When a publication transactions is confirmed, the miner constructs and submits a "proof-of-proof transaction" that proves inclusion of the publication in the Bitcoin blockchain as well as ownership of the publication.
  
PoP Mining requires Bitcoin accessibility.  
+
PoP mining is a competitive endeavor in which miners compete to have their endorsement of the VeriBlock blockchain state included in the earliest possible Bitcoin block.
  
For Testnet, that means just running a testnet Bitcoin node.
+
== Getting Started ==
  
See this Bitcoin page for background info: https://en.bitcoin.it/wiki/Running_Bitcoin
+
* Download the latest NodeCore software suite from the [https://github.com/VeriBlock/nodecore-releases/releases VeriBlock Github repository] and extract the contents of the package.
 +
* Follow the instructions at [[NodeCore QuickStart]] to start a local instance of NodeCore. '''For PoP mining to be successful, the local NodeCore instance must be fully synced with the VeriBlock network.'''
 +
* From the ''nodecore-pop-{version}/bin'' folder, run the application:
 +
** '''WINDOWS''': Run '''nodecore-pop.bat'''
 +
** '''LINUX/MAC''': Run '''nodecore-pop'''. ''NOTE: If you are having trouble running nodecore-pop on Linux, you may need to make nodecore-pop executable: '''chmod a+x nodecore-pop'''''
 +
* On first execution of the application, you will be notified that the application creates a lightweight Bitcoin wallet and that you will be shown a set of "seed words" that can be used to recover your wallet later on. Acknowledge this by typing 'y' and pressing ENTER.
 +
* '''Make note of the seed words. You will not be shown them again'''
 +
* Acknowledge again that you have seen the seed words by typing 'y' and pressing ENTER.
  
# Download Bitcoin Core https://bitcoin.org/en/download, run Bitcoin in testnet mode, and allow it to fully sync. This may take a while depending on your network connection.
+
The PoP miner acts as an SPV client of the Bitcoin network to maintain the internal wallet. On the first run of the PoP miner, the Bitcoin blockchain will be downloaded (this is nearly all just block headers and not full blocks).
# Run bitcoin TestNet by passing in the testnet parameter:
+
 
## Windows: bitcoin-qt.exe -testnet
+
[[File:PoP_mine_1.png|600px]]
## Linux: bitcoind -testnet
+
 
# Set up a rpc user and password in the bitcoin.conf file
+
* Once the blockchain download is completed, you are shown a Bitcoin address to send coins to in order to fund the internal wallet
# In Bitcoin Core, goto: Settings > Options > Main (tab) > Open Config File (button).
+
* Fund the internal wallet by sending coins to the displayed address and wait for that transaction to be confirmed
## [[File:HowTo_PoP_1a.png|400px]]
+
 
# specify the flags like below (server=1, rpcuser=your_username, rpcpassword=your_password), and save the file. Re-click the "Open Config File" to ensure the settings did indeed save (they should have)
+
When the miner is able to communicate with NodeCore, has downloaded the Bitcoin blockchain, and is sufficiently funded, you will see a message:
# If prompted with "The configuration file is used to...", then click ok.
+
 
bitcoin.conf (a plaintext file) will open.
+
<nowiki>SUCCESS: PoP Miner: READY</nowiki>
 +
 
 +
Congratulations! You are ready to start mining!
 +
 
 +
== Your First Mine ==
 +
 
 +
The PoP Miner is pre-configured with a default value for the transaction fee to use when creating Bitcoin transactions. It is expressed in satoshis per KB (1000 bytes) and defaults to 20,000. '''It is highly recommended that you assess the current Bitcoin transaction fee market and configure the miner with an appropriately competitive transaction fee.'''
 +
 
 +
* To configure the transaction fee, run the 'setconfig'. e.g. If you determine 30,000 satoshis/KB is a competitive transaction fee you would configure the miner by running:
 +
<nowiki>setconfig bitcoin.fee.perkb 30000</nowiki>
 +
 
 +
''Additional insight regarding transaction fees can be found in the FAQ section below, under the question "How do I set the BTC transaction fee?"''
 +
 
 +
* To begin a mining operation, type 'mine' and press ENTER
 +
 
 +
[[File:PoP_mine_2.png|600px]]
 +
 
 +
A mining operation is variable in the amount of time that it takes to reach completion. The first several steps of getting publication data and submitting a Bitcoin transaction happen very quickly. You then have a period of waiting while that transaction waits to be confirmed in a Bitcoin block. Assuming your transaction fee is competitive enough to be included in the next block, you are waiting for that next Bitcoin block to be mined (on average, once every 10 minutes, though much longer times are not uncommon). Once the transaction confirms, you'll again have a rapid sequence of steps in which your transaction is proven to exist in the Bitcoin block and the proof-of-proof transaction is submitted to the VeriBlock blockchain.
 +
 
 +
At this point, the miner continues to listen as new Bitcoin blocks arrive and in the event a Bitcoin blockchain reorganization causes your endorsement transaction to be part of a different block, it will resubmit the proof-of-proof transaction.
 +
 
 +
== Interacting with the Command-Line ==
 +
 
 +
The PoP miner provides several commands for configuring, interacting and assessing the state of your mining operations. A detailed explanation of each command can be found at [[PoP Miner CommandLine]]
 +
 
 +
== PoP Mining Lifecycle ==
 +
 
 +
Current Actions
 +
 
 +
The WAIT and CONFIRM may take a while. Other steps should be fast.
 +
 
 +
Once the PoP Miner is done, there is nothing more for it to do, check [[HowTo_run_PoP_Miner#viewrecentrewards]] to see about rewards.
 +
 
 +
{| class="wikitable"
 +
! Action
 +
! Duration
 +
! Description
 +
|-
 +
| READY
 +
|
 +
| Operation has been initialized and is ready to start
 +
|-
 +
| PUBLICATION_DATA
 +
|
 +
| Getting the publication data from NodeCore
 +
|-
 +
| TRANSACTION
 +
|
 +
| Composing and submitting the Bitcoin transaction containing the PoP publication data
 +
|-
 +
| WAIT
 +
| "a while"
 +
| Waiting and listening for new Bitcoin blocks that include the transaction
 +
|-
 +
| PROOF
 +
|
 +
| Validating the merkle path of the transaction in the block
 +
|-
 +
| CONTEXT
 +
|
 +
| Accumulating Bitcoin block headers to provide enough context to NodeCore to maintain an unbroken SPV view of the Bitcoin blockchain
 +
|-
 +
| SUBMIT
 +
|
 +
| Submitting all required proofs of the Bitcoin transaction to NodeCore (NodeCore adds a PoP transaction to mempool)
 +
|-
 +
| CONFIRM
 +
| maybe several hours
 +
| Waiting and listening for new Bitcoin blocks and transaction to confirm 20 times. Handles resubmission of PoP transaction to NodeCore if the Bitcoin blockchain should fork and previous block is no longer in the main branch.
 +
|-
 +
| DONE
 +
|
 +
| Done with mining. Check [[HowTo_run_PoP_Miner#viewrecentrewards]] for upcoming rewards
 +
|}
 +
 
 +
 
 +
Expect this kind of flow in the log:
 +
 
 +
Note the the PoP Id (2aaef35f) given to each step.
  
 
<pre>
 
<pre>
server=1
+
Expect this flow:
rpcuser=bitcoinrpc
+
[2aaef35f] Mining operation current action: Waiting for transaction to be included in Bitcoin block
rpcpassword=someTestNetPassword123
+
[2aaef35f] Transaction seen in block
 +
[2aaef35f] Setting block header of proof
 +
[2aaef35f] Found transaction in Bitcoin block with header:
 +
[2aaef35f] Mining operation current action: Proving transaction included in Bitcoin block
 +
[2aaef35f] Found Merkle path to transaction:
 +
[2aaef35f] Mining operation current action: Building Bitcoin context
 +
[2aaef35f] Added 3 context headers
 +
...
 +
[2aaef35f] Mining operation current action: Submitting completed PoP transaction
 +
[2aaef35f] Submitted PoP transaction: B9BC44D4E77CD5EE1E6B05B8154453EB436CC516C1DC9B9D3E22208AA2E3BC2E
 +
[2aaef35f] Mining operation current action: Confirming Bitcoin transaction
 +
[2aaef35f] New block added, checking confidence
 +
[2aaef35f] Mining operation current action: Done
 +
[2aaef35f] Mining operation is now: COMPLETE
 
</pre>
 
</pre>
  
Get Bitcoin testnet coins from a faucet. Running PoP on VeriBlock testnet requires a small amount of testnet Bitcoin. You can find a list of popular Bitcoin testnet faucets here: https://en.bitcoin.it/wiki/Testnet#Faucets. Get a new Bitcoin testnet address from your running instance of Bitcoin, and then enter it into one of the Bitcoin testnet faucet sites to receive testnet Bitcoin coins.
+
== Major Changes ==
  
==Run the PoP Miner==
+
=== v0.3.8 ===
  
Note: If you are having trouble running nodecore-pop on linux, you may need to make nodecore-pop executable: chmod a+x nodecore-pop
+
'''IMPORTANT! Bitcoin fee configuration changes from Fee per ''byte'' to Fee per ''kilobyte''.''' The configuration property in the nc-pop.properties file has changed from ''bitcoin.fee.perbyte'' to '''bitcoin.fee.perkb'''. The configuration value should be 1000 times the previous per byte fee (Bitcoin 1 KB = 1000 Bytes).
  
Run a local instance of NodeCore
+
The rationale for this decision is that if we assume a normal PoP transaction has a size of ~285 bytes, a +1 increase in the fee per byte results in a 285 Satoshi increase in the final fee (+1 satoshi per byte * 285 bytes). Whereas a +1 increase in the fee per kilobyte results in a "0.285 Satoshi" increase in the final fee (+1 satoshi per kb * 0.285 kb). The net effect is a '''much''' finer granularity of control over the final fee.
  
Unzip nodecore-pop-*.zip
+
Additional changes:
In the bin folder, if Windows then run nodecore-pop.bat, if linux then run nodecore-pop
+
* The minimum transaction fee per kb of 1000 Satoshis / KB can be disabled by setting the configuration value '''bitcoin.minrelayfee.enabled=false'''. This should be used with extreme caution as it is possible transactions below this threshold are ignored by the Bitcoin network.
You will be prompted for a series of questions. Below is sample inputs. Note that Bitcoin TestNet port is 18332 (not 18333).
+
* The "change" address used in a PoP transaction will now be reused. Given the high volume of transactions we've seen from PoP miners, importing wallets was becoming prohibitive due to the large number of items (address keys) present in the filter.
  
One prompt will be for a "funded Bitcoin address." This can be retrieved by running "listunspent" from the built-in console. To get to the built-in consile, go to: Help > Debug > Console Tab:
+
=== v0.3.0 ===
  
[[File:HowTo_PoP_4.png|400px]]
+
See: [[Mining_High_Noon#PoP_Miner_Update_for_High_Noon]]
  
At this point, you should have:
+
Proof-of-proof transactions now take place on the Bitcoin MainNet and therefore spend BTC from your PoP miner's wallet.
* An instance of NodeCore running, such as one available at 127.0.0.1:10500
+
 
* A Bitcoin testnet node, such as on available at 127.0.0.1:18332
+
== Reference ==
* That Bitcoin testnet node has an RPC username and password set up in its bitcoin.conf file
+
 
* A funded Bitcoin address (first get testnet Bitcoin coins from a faucet, then run listunspent to get an address), such as "mwAY47kNhN2TY1nc23Y18aDi4botjpGzAy"
+
=== VeriBlock "Rounds" ===
 +
 
 +
VeriBlock blocks are classified as belonging to one of four rounds. The pattern of rounds repeats every 20 blocks (ending with a block whose number is divisible by 20, e.g. blocks 65461-65480 is a set and 65481-65500 is the next set).  The round classification within each 20 block set is illustrated below:
 +
 
 +
[[File:rounds.png|1000px]]
 +
 
 +
Each set of 20 contains just one Round 4 block, the last block, and is known as a "keystone".
 +
 
 +
=== ncpop.properties Reference ===
 +
 
 +
These properties can be set in the ncpop.properties file (in bin folder, located next to nodecore-pop.bat). If this file does not exist, it will be created the first time the miner is run.
 +
 
 +
These can also be seen from running the "listconfig" command, and set with the "setconfig" command.
 +
 
 +
{| class="wikitable"
 +
! Config Key
 +
! Default Value
 +
! Comment
 +
|-
 +
| bitcoin.network
 +
| mainnet
 +
| The network type, there are three options: mainnet, testnet and alphanet
 +
|-
 +
| bitcoin.fee.max
 +
| 8000
 +
| The maximum transaction fee for any given Bitcoin transaction
 +
|-
 +
| bitcoin.fee.perkb
 +
| 20000
 +
| The Bitcoin transaction fee per kilobyte (1000 bytes)
 +
|-
 +
| nodecore.rpc.host
 +
| 127.0.0.1
 +
| The NodeCore ip where the PoP Miner will connects to
 +
|-
 +
| nodecore.rpc.port
 +
| 10501
 +
| The NodeCore port where the PoP Miner will connects to
 +
|-
 +
| nodecore.rpc.ssl
 +
| false
 +
| Specify if the connection between the PoP Miner and the NodeCore should use the SSL protocol
 +
|-
 +
| nodecore.rpc.password
 +
|
 +
| The password which will be used to connect to the NodeCore
 +
|-
 +
| nodecore.rpc.cert.chain.path
 +
|
 +
|
 +
|-
 +
| pop.cron.schedule
 +
|
 +
| A schedule on which to mine, see below for further information
 +
|-
 +
| auto.mine.round1
 +
| false
 +
| Automatically mine whenever a new "Round 1" block is seen by NodeCore
 +
|-
 +
| auto.mine.round2
 +
| false
 +
| Automatically mine whenever a new "Round 2" block is seen by NodeCore
 +
|-
 +
| auto.mine.round3
 +
| false
 +
| Automatically mine whenever a new "Round 3" block is seen by NodeCore
 +
|-
 +
| auto.mine.round4
 +
| false
 +
| Automatically mine whenever a new "Round 4" block is seen by NodeCore
 +
|-
 +
| bitcoinj.minimal.peer.protocol.version
 +
| BLOOM_FILTER
 +
| Experimental The minimal protocol version used to accept or reject the peers, the next protocols are available: MINIMUM, PONG, BLOOM_FILTER, BLOOM_FILTER_BIP111, WITNESS_VERSION and CURRENT
 +
|-
 +
| bitcoinj.max.peer.connections
 +
| 12
 +
| Experimental Adjust the desired number of connections that we will create to peers
 +
|-
 +
| bitcoinj.peer.discovery.timeout.millis
 +
| 5000
 +
| Experimental This is how many milliseconds we wait for peer discoveries to return their results
 +
|-
 +
| bitcoinj.peer.download.tx.dependency.depth
 +
| 2147483647
 +
| Experimental Configure download of pending transaction dependencies. A change of values only takes effect for newly connected peers
 +
|-
 +
| bitcoinj.required.peer.services
 +
| 0
 +
| Experimental Convenience for connecting only to peers that can serve specific services. It will configure suitable peer discoveries, the next services are available: NODE_NETWORK, NODE_GETUTXOS, NODE_BLOOM, NODE_WITNESS, NODE_NETWORK_LIMITED and NODE_BITCOIN_CASH
 +
|-
 +
| bitcoinj.min.peer.broadcast.connections
 +
| 0
 +
| Experimental The number of connections that are required before transactions will be broadcast
 +
|-
 +
| bitcoinj.max.peers.to.discover.count
 +
| 100
 +
| Experimental Sets the maximum number of peers to discover
 +
|-
 +
| bitcoinj.peer.ping.interval.msec
 +
| 2000
 +
| Experimental Sets the period between pings for an individual peer
 +
|-
 +
|}
 +
 
 +
'''WARNING:''' It is not recommended to configure both the ''pop.cron.schedule'' and the ''auto.mine.roundN'' properties as it can result in too many unconfirmed transactions chained together.
 +
 
 +
==== PoP Cron Scheduler ====
 +
 
 +
Cron expressions are a compact format for expressing a recurring schedule. For help constructing an expression, visit an online tool, such as http://www.cronmaker.com/.
 +
An example schedule that would trigger a mine operation at :00 and :30 minutes every hour is below:
  
 
<pre>
 
<pre>
 +
pop.cron.schedule=0 0/30 * * * ?
 +
</pre>
 +
 +
=== PoP Application Status Codes ===
 +
 +
Status of the PoP Miner
  
Please enter the VeriBlock NodeCore host [Default: 127.0.0.1](]):
+
{| class="wikitable"
> 127.0.0.1
+
! Status
Please enter the VeriBlock NodeCore port [10500](Default:):
+
! Description
> 10500
+
|-
Please enter the Bitcoin RPC host [127.0.0.1](Default:):
+
| STARTED
> 127.0.0.1
+
|
Please enter the Bitcoin RPC port [8332](Default:):
+
|-
> 18332
+
| RUNNING
Please enter a funded Bitcoin address you would like to use for PoP:
+
| Will most often see this state
> mwAY47kNhN2TY1nc23Y18aDi4botjpGzAy
+
|-
Please enter your Bitcoin RPC username:
+
| COMPLETE
> bitcoinrpc
+
|
Please enter your Bitcoin RPC password:
+
|-
> someTestNetPassword123
+
| FAILED
How many BTC would you like to pay as a transaction fee for each PoP? (Suggested: 0.001)
+
|
> 0.001
+
|}
  
 +
 +
=== PoP Files ===
 +
 +
These are files within the \bin folder:
 +
 +
* bitcoinj.nodecore-pop.log - log file for BitcoinJ
 +
* bitcoin-pop-testnet.spvchain
 +
* bitcoin-pop-testnet.wallet --> Bitcoin wallet, this contains your BTC!
 +
* ncpop.properties
 +
* nodecore-pop --> start PoP Miner on linux
 +
* nodecore-pop.bat --> start PoP Miner on windows
 +
* veriblock.nodecore-pop.log --> log file for PoP. If you have errors with PoP mining, keep this file for troubleshooting
 +
 +
== FAQ ==
 +
 +
=== Does the PoP Miner require BTC or tBTC? ===
 +
 +
BTC.
 +
 +
Previously the TestNet PoP Miner required tBTC (testnet BTC) during the "Mining Sunrise" phase.
 +
 +
After VBK MainNet launch, the VBK TestNet PoP Miner will again use BTC TestNet (tBTC), and the VBK MainNet PoP Miner will use BTC.
 +
 +
=== How can I see my PoP rewards? ===
 +
 +
See: [[PoP_Miner_Rewards]]
 +
 +
=== Do I need to run a full Bitcoin node? ===
 +
No. The PoP Miner uses the [https://bitcoinj.github.io/ bitcoinj] library to embed a lightweight Bitcoin wallet (and SPV client), such that one does NOT need to run a full Bitcoin node.
 +
 +
=== Does the Bitcoin I send to my PoP Wallet need to be confirmed? ===
 +
Yes. When funding your PoP wallet with "outside" funds, the transaction will need to confirm.
 +
 +
During the course of normal PoP mining, the transactions created by the embedded wallet are considered trusted and therefore the wallet is allowed to create subsequent transactions that spend the pending UTXO.
 +
 +
=== How do I set the BTC transaction fee? ===
 +
 +
For "what should the BTC fee be", check: [[PoP_Miner_Rewards#What_should_the_tBTC_Tx_fee_be.3F]]. This section explains how to set the fee.
 +
 +
Either set it in the ncpop.properties file:
 +
 +
<pre>
 +
bitcoin.fee.max=8000
 +
bitcoin.fee.perkb=20000
 +
</pre>
 +
 +
Or set it via the 'setconfig' command:
 +
 +
<pre>
 +
setconfig bitcoin.fee.perkb 20000
 +
setconfig bitcoin.fee.max 8000
 +
</pre>
 +
 +
Note: Make sure to also set 'bitcoin.fee.max'. This is the absolute maximum you're willing to allow the final transaction fee to be. An average transaction may be around 300 bytes (or, 0.3 KB), so, generally the configured maximum should be at least (0.3 KB x ''bitcoin.fee.perkb'').
 +
 +
You can see the current fee by running the 'listconfig' command ([[HowTo_run_PoP_Miner#listconfig]])
 +
 +
=== How to set up a cron schedule for mining ===
 +
 +
Properties file is:
 +
 +
<pre>
 +
pop.cron.schedule=0 0/30 * * * ?
 
</pre>
 
</pre>
  
''Note that after entering this info once, it will be saved to a ncpop.properties file for future reference. If you ever need to change these entries in the future, you can either delete ncpop.properties and restart nodecore-pop (where it will prompt you for new entries), or you can change the entires in the configuration file directly.''
+
Checkout http://www.cronmaker.com/ for help building the expression
 +
 
 +
=== How to auto-mine every Nth round? ===
 +
 
 +
The PoP Miner can mine every Nth round. See: [[HowTo_run_PoP_Miner#VeriBlock_.22Rounds.22]]
 +
 
 +
Within a 20 block window:
 +
 
 +
* round4 = every 20th block, i.e. keystone (highest reward)
 +
* round1 = 1,4,7,10,13,16,19
 +
* round2 = 2,5,8,11,14,17
 +
* round3 = 3,6,9,12,15,18
 +
 
 +
Set the ncpop.properties file:
 +
 
 +
<pre>
 +
auto.mine.round4=true
 +
</pre>
 +
 
 +
Note if you wanted different fees for different rounds, you could have multiple miners run. Miner A could run rounds 1-3 at Fee X, Miner B could run round 4 at fee Y.
 +
 
 +
Note, it is advised to not use this and the cron expression - pick one or the other.
 +
 
 +
=== Can I run multiple PoP Miners? ===
 +
 
 +
Yes. Each instance of the miner will require its own unique wallet file ''(bitcoin-pop.wallet)''. Do not clone wallet files between instances.
 +
 
 +
The best way to accomplish this is to make copies of the nodecore-pop folder before launching the miner, so that as each new instance is started, it will create a unique wallet file and download the appropriate SPV chain data. As there is an initial download of Bitcoin blocks, it is also recommended to spin up each new instance of the miner only after the previous completes its download.
 +
 
 +
* Option A: Run multiple instances of a PoP Miner on a single machine.  You will need to clone the ''nodecore-pop'' folder on the machine and use different wallets. '''Do not run the multiple instances of the same executable with the same wallet'''. Each copy will have it's own set of files: [[HowTo_run_PoP_Miner#PoP_Files]]
 +
* Option B: Run instances on multiple different machines, all pointed to the same remote NodeCore instance by setting the ncpop.properties 'nodecore.rpc.host=<remote_IP_Here>' (also see [[https://wiki.veriblock.org/index.php?title=NodeCore_Networking]] to set up NodeCore to accept connections from the remote PoP miner)
  
Because PoP Mining costs a small amount of BTC, you will be prompted for each transaction with something like: "'''Press enter to pay 0.001 BTC to perform a PoP! (q to quit)'''"
+
=== Can I import a previous BTC wallet? ===
  
A Proof of Proof mining operation is a long running process. It involves retrieving a PoP signature from NodeCore, submitting a Bitcoin transaction, waiting for the Bitcoin transaction to be included in a block, and finally submitting that Bitcoin block information back to NodeCore. Until that final submission to NodeCore takes place, the mining operation is incomplete, and you will not be rewarded for your PoP mining efforts.  
+
Yes, just copy bin\bitcoin-pop-*.wallet.
  
The console output updates with each new stage of the mining operation.  Because it is possible to have multiple concurrent mining operations executing, each status update written to the console includes a "job identifier", that will look like [4826f210]. This job identifier can be used to correlate status messages for any given mining operation.  By far, the longest single task in the mining operation is waiting for a Bitcoin transaction to be included in a mined Bitcoin block. It is very common and normal to see many status message written very rapidly as soon as you initiate a new operation and then for the miner to seemingly "pause" with the latest message reading:
+
This will carry over the BTC balance.
  
<pre>2018-04-02 00:15:00.052 [4826f210] Mining operation current action: Waiting for transaction to be included in Bitcoin block</pre>
+
== Troubleshooting ==
  
If a reasonable transaction fee was used to submit your Bitcoin transaction, it will eventually be included in a block, and the PoP miner will progress through the final stages of the operation.  You will know an operation is complete when you see console output:
+
=== PoP Miner takes a very long time to sync Bitcoin network ===
  
<pre>2018-04-02 00:18:27.315 [4826f210] Mining operation is now: Completed</pre>
+
If you notice that your PoP miner is taking a long time to download Bitcoin blocks, or fails to completely sync, you can remove the wallet and nodecore-pop.dat files and start a 'fresh' PoP miner. Note, in doing this, you will lose any funds or transactions that are current pending, so it is best to routinely withdraw your balance and start fresh wallets if you plan to mine continuously for long periods of time.  The frequency of which you will want to create new wallets will depend entirely on the number of transactions that you submit.
  
At any point in the process, you may queue up another PoP mining operation by hitting the "ENTER" key.  You also may quit the application at any time by pressing "q" followed by the "ENTER" key. The quit sequence waits for all in-progress mining operations to complete before actually shutting down the application. This is to ensure that your PoP transaction is submitted and you have every opportunity to be rewarded for the Bitcoin you've spent to begin the operation. You will see status updates written to the console as it's attempting to finalize running operations:
+
=== "PoP Miner not ready" warning ===
  
<pre>Waiting on operation '2a479b68' at action: Waiting for transaction to be included in Bitcoin block
+
{| class="wikitable"
Waiting on 1 operations to complete</pre>
+
! Warning
 +
! Solution
 +
|-
 +
| PoP wallet does not contain sufficient funds
 +
| Send Bitcoins to your PoP BTC wallet address. Run commands showbitcoinbalance (it should be greater than zero), and sendbitcointoaddress.
 +
|-
 +
| Could not connect to NodeCore
 +
| Ensure an instance of NodeCore is running, and you could connect to it from the NC_CLI and run getinfo
 +
|-
 +
| Bitcoin blockchain is not downloaded
 +
| Ensure the ncpop.properties file has a line for bitcoin.network=testnet, and wait for the blockchain to download. There should be a message like "Blockchain downloading: 95%".
 +
|-
 +
| Bitcoin service is not ready
 +
| Check the other warnings. There should be a message like "SUCCESS: Bitcoin service is ready".
 +
|}
  
Congrats, you have mined a PoP transaction!
+
=== I do not have any bitcoin ===
  
== View PoP on the bitcoin blockchain ==
+
For mainnet, acquire Bitcoin via normal means.
  
Go back to your Bitcoin Core wallet, Transactions tab, and you will see PoP Transactions. Drill down on a transaction and you'll see a transaction ID.  
+
For testnet, use a faucet to get test bitcoin. You can find a list of popular Bitcoin testnet faucets here: https://en.bitcoin.it/wiki/Testnet#Faucets.
  
[[File:HowTo_PoP_2c.png|400px]]
+
=== Mining operation action took longer than expected. Operation can be resubmitted. ===
  
After a few minutes, this transaction ID should show up on Bitcoin testnet block explorers, such as http://testnet.coinsecrets.org.
+
If you get an error, then try running the resubmit command: [[PoP_Miner_CommandLine#resubmit]]
  
 
<pre>
 
<pre>
Status: 0/unconfirmed, in memory pool
+
ERROR: Mining operation action took longer than expected. Operation can be resubmitted.
Date: 3/9/2018 14:33
 
Debit: 0.00000000 BTC
 
Transaction fee: -0.00100000 BTC
 
Net amount: -0.00100000 BTC
 
Transaction ID: 52bac8bad5c9d71f1adcf166c5ef5e651f269851b1816b61cb99ed62268f512b
 
Transaction total size: 283 bytes
 
Output index: 0
 
 
</pre>
 
</pre>
Drill down on the block explorer, and you will see the proof in the OP_RETURN. Ignore the first 4 characters (0x4c refers to the OP_PUSHDATA1 opcode, and 0x50 refers to 80 bytes [the size of our published data] being pushed onto the stack), look at the last 160 (80 bytes), and that is your pop publication on the BTC testnet!
+
 
 +
PoP Transaction must complete within a certain period of time to remain relevant, and hence it times out. For example, if there's an abnormally high amount of context headers, that may cause a timeout.
 +
 
 +
===Why does the BTC address change each time I run the showAddress command?===
 +
 
 +
Bitcoin addresses are just a representation of the public key from a public/private key pair. We generate new key pairs every time you run the `showAddress` command. The PoP Miner manages these addresses for you, so you don't have to worry about them. As a privacy best practice, it's best to always use a new address (key pair) every time you receive a payment. The reason the PoP miner (or any Bitcoin wallet) generates a new address each time you receive a payment is for privacy reasons only, because if you use the same address for many transactions, the peers you traded with will be able to identify which other transactions you were involved in, and your identity will be easier to tie to the address. [Credit: A sentence or two for this answer may come from an unknown tech source]
 +
 
 +
 
 +
=== Failed to get PoP publication data from NodeCore ===
 +
 
 +
This kind of error implies that NodeCore is not ready.
 +
 
 +
Try to connect to the NC instance with the NC_CLI and run getinfo:
  
 
<pre>
 
<pre>
OP_RETURN
+
Failed to get PoP publication data from NodeCore: Status{code=DEADLINE_EXCEEDED, description=deadline exceeded after 14999412514ns, cause=null}
4c5000000001000000f29717032fb910956d001e9ae5554540864b4c998cf7233ca3ff78109365086b0e7ad55c480ce9dd55fa6763275aa2eedc0319ca1c
 
 
</pre>
 
</pre>
  
https://www.blocktrail.com/tBTC/tx/52bac8bad5c9d71f1adcf166c5ef5e651f269851b1816b61cb99ed62268f512b
+
Can you run NC_CLI getinfo?
 +
 
 +
* Yes --> Then try to repeat the PoP miner operation.
 +
* No --> Troubleshoot NodeCore [[HowTo_run_NodeCore]]
  
[[File:HowTo_PoP_3.png|400px]]
+
== Command Line Reference ==
 +
See: [[PoP_Miner_CommandLine]]

Latest revision as of 15:58, 4 March 2022

See: Main_Page, PoP_Miner_CommandLine, PoP_Transaction_LifeCycle, PoP_Miner_Rewards, PoP_Reward_Summary, SegWit_PoP_Miner

Overview

The Proof-of-Proof (PoP) consensus protocol enables a security inheriting blockchain (VeriBlock) to inherit the complete proof-of-work of a security providing blockchain (Bitcoin). For a deeper understanding of the PoP consensus protocol, please refer to the PoP White Paper.

A PoP miner serves as the communication and transactional bridge between the VeriBlock blockchain and the Bitcoin blockchain. As often as they wish, a PoP miner will take the most recent blockchain state data from the VeriBlock blockchain, along with an identification of the miner, and publish it to the Bitcoin blockchain via a transaction containing an OP_RETURN with the embedded data. The PoP miner then waits for the transaction to be included in a Bitcoin block. When a publication transactions is confirmed, the miner constructs and submits a "proof-of-proof transaction" that proves inclusion of the publication in the Bitcoin blockchain as well as ownership of the publication.

PoP mining is a competitive endeavor in which miners compete to have their endorsement of the VeriBlock blockchain state included in the earliest possible Bitcoin block.

Getting Started

  • Download the latest NodeCore software suite from the VeriBlock Github repository and extract the contents of the package.
  • Follow the instructions at NodeCore QuickStart to start a local instance of NodeCore. For PoP mining to be successful, the local NodeCore instance must be fully synced with the VeriBlock network.
  • From the nodecore-pop-{version}/bin folder, run the application:
    • WINDOWS: Run nodecore-pop.bat
    • LINUX/MAC: Run nodecore-pop. NOTE: If you are having trouble running nodecore-pop on Linux, you may need to make nodecore-pop executable: chmod a+x nodecore-pop
  • On first execution of the application, you will be notified that the application creates a lightweight Bitcoin wallet and that you will be shown a set of "seed words" that can be used to recover your wallet later on. Acknowledge this by typing 'y' and pressing ENTER.
  • Make note of the seed words. You will not be shown them again
  • Acknowledge again that you have seen the seed words by typing 'y' and pressing ENTER.

The PoP miner acts as an SPV client of the Bitcoin network to maintain the internal wallet. On the first run of the PoP miner, the Bitcoin blockchain will be downloaded (this is nearly all just block headers and not full blocks).

PoP mine 1.png

  • Once the blockchain download is completed, you are shown a Bitcoin address to send coins to in order to fund the internal wallet
  • Fund the internal wallet by sending coins to the displayed address and wait for that transaction to be confirmed

When the miner is able to communicate with NodeCore, has downloaded the Bitcoin blockchain, and is sufficiently funded, you will see a message:

SUCCESS: PoP Miner: READY

Congratulations! You are ready to start mining!

Your First Mine

The PoP Miner is pre-configured with a default value for the transaction fee to use when creating Bitcoin transactions. It is expressed in satoshis per KB (1000 bytes) and defaults to 20,000. It is highly recommended that you assess the current Bitcoin transaction fee market and configure the miner with an appropriately competitive transaction fee.

  • To configure the transaction fee, run the 'setconfig'. e.g. If you determine 30,000 satoshis/KB is a competitive transaction fee you would configure the miner by running:
setconfig bitcoin.fee.perkb 30000

Additional insight regarding transaction fees can be found in the FAQ section below, under the question "How do I set the BTC transaction fee?"

  • To begin a mining operation, type 'mine' and press ENTER

PoP mine 2.png

A mining operation is variable in the amount of time that it takes to reach completion. The first several steps of getting publication data and submitting a Bitcoin transaction happen very quickly. You then have a period of waiting while that transaction waits to be confirmed in a Bitcoin block. Assuming your transaction fee is competitive enough to be included in the next block, you are waiting for that next Bitcoin block to be mined (on average, once every 10 minutes, though much longer times are not uncommon). Once the transaction confirms, you'll again have a rapid sequence of steps in which your transaction is proven to exist in the Bitcoin block and the proof-of-proof transaction is submitted to the VeriBlock blockchain.

At this point, the miner continues to listen as new Bitcoin blocks arrive and in the event a Bitcoin blockchain reorganization causes your endorsement transaction to be part of a different block, it will resubmit the proof-of-proof transaction.

Interacting with the Command-Line

The PoP miner provides several commands for configuring, interacting and assessing the state of your mining operations. A detailed explanation of each command can be found at PoP Miner CommandLine

PoP Mining Lifecycle

Current Actions

The WAIT and CONFIRM may take a while. Other steps should be fast.

Once the PoP Miner is done, there is nothing more for it to do, check HowTo_run_PoP_Miner#viewrecentrewards to see about rewards.

Action Duration Description
READY Operation has been initialized and is ready to start
PUBLICATION_DATA Getting the publication data from NodeCore
TRANSACTION Composing and submitting the Bitcoin transaction containing the PoP publication data
WAIT "a while" Waiting and listening for new Bitcoin blocks that include the transaction
PROOF Validating the merkle path of the transaction in the block
CONTEXT Accumulating Bitcoin block headers to provide enough context to NodeCore to maintain an unbroken SPV view of the Bitcoin blockchain
SUBMIT Submitting all required proofs of the Bitcoin transaction to NodeCore (NodeCore adds a PoP transaction to mempool)
CONFIRM maybe several hours Waiting and listening for new Bitcoin blocks and transaction to confirm 20 times. Handles resubmission of PoP transaction to NodeCore if the Bitcoin blockchain should fork and previous block is no longer in the main branch.
DONE Done with mining. Check HowTo_run_PoP_Miner#viewrecentrewards for upcoming rewards


Expect this kind of flow in the log:

Note the the PoP Id (2aaef35f) given to each step.

Expect this flow:
[2aaef35f] Mining operation current action: Waiting for transaction to be included in Bitcoin block
[2aaef35f] Transaction seen in block
[2aaef35f] Setting block header of proof
[2aaef35f] Found transaction in Bitcoin block with header: 
[2aaef35f] Mining operation current action: Proving transaction included in Bitcoin block
[2aaef35f] Found Merkle path to transaction: 
[2aaef35f] Mining operation current action: Building Bitcoin context
[2aaef35f] Added 3 context headers
...
[2aaef35f] Mining operation current action: Submitting completed PoP transaction
[2aaef35f] Submitted PoP transaction: B9BC44D4E77CD5EE1E6B05B8154453EB436CC516C1DC9B9D3E22208AA2E3BC2E
[2aaef35f] Mining operation current action: Confirming Bitcoin transaction
[2aaef35f] New block added, checking confidence
[2aaef35f] Mining operation current action: Done
[2aaef35f] Mining operation is now: COMPLETE

Major Changes

v0.3.8

IMPORTANT! Bitcoin fee configuration changes from Fee per byte to Fee per kilobyte. The configuration property in the nc-pop.properties file has changed from bitcoin.fee.perbyte to bitcoin.fee.perkb. The configuration value should be 1000 times the previous per byte fee (Bitcoin 1 KB = 1000 Bytes).

The rationale for this decision is that if we assume a normal PoP transaction has a size of ~285 bytes, a +1 increase in the fee per byte results in a 285 Satoshi increase in the final fee (+1 satoshi per byte * 285 bytes). Whereas a +1 increase in the fee per kilobyte results in a "0.285 Satoshi" increase in the final fee (+1 satoshi per kb * 0.285 kb). The net effect is a much finer granularity of control over the final fee.

Additional changes:

  • The minimum transaction fee per kb of 1000 Satoshis / KB can be disabled by setting the configuration value bitcoin.minrelayfee.enabled=false. This should be used with extreme caution as it is possible transactions below this threshold are ignored by the Bitcoin network.
  • The "change" address used in a PoP transaction will now be reused. Given the high volume of transactions we've seen from PoP miners, importing wallets was becoming prohibitive due to the large number of items (address keys) present in the filter.

v0.3.0

See: Mining_High_Noon#PoP_Miner_Update_for_High_Noon

Proof-of-proof transactions now take place on the Bitcoin MainNet and therefore spend BTC from your PoP miner's wallet.

Reference

VeriBlock "Rounds"

VeriBlock blocks are classified as belonging to one of four rounds. The pattern of rounds repeats every 20 blocks (ending with a block whose number is divisible by 20, e.g. blocks 65461-65480 is a set and 65481-65500 is the next set). The round classification within each 20 block set is illustrated below:

Rounds.png

Each set of 20 contains just one Round 4 block, the last block, and is known as a "keystone".

ncpop.properties Reference

These properties can be set in the ncpop.properties file (in bin folder, located next to nodecore-pop.bat). If this file does not exist, it will be created the first time the miner is run.

These can also be seen from running the "listconfig" command, and set with the "setconfig" command.

Config Key Default Value Comment
bitcoin.network mainnet The network type, there are three options: mainnet, testnet and alphanet
bitcoin.fee.max 8000 The maximum transaction fee for any given Bitcoin transaction
bitcoin.fee.perkb 20000 The Bitcoin transaction fee per kilobyte (1000 bytes)
nodecore.rpc.host 127.0.0.1 The NodeCore ip where the PoP Miner will connects to
nodecore.rpc.port 10501 The NodeCore port where the PoP Miner will connects to
nodecore.rpc.ssl false Specify if the connection between the PoP Miner and the NodeCore should use the SSL protocol
nodecore.rpc.password The password which will be used to connect to the NodeCore
nodecore.rpc.cert.chain.path
pop.cron.schedule A schedule on which to mine, see below for further information
auto.mine.round1 false Automatically mine whenever a new "Round 1" block is seen by NodeCore
auto.mine.round2 false Automatically mine whenever a new "Round 2" block is seen by NodeCore
auto.mine.round3 false Automatically mine whenever a new "Round 3" block is seen by NodeCore
auto.mine.round4 false Automatically mine whenever a new "Round 4" block is seen by NodeCore
bitcoinj.minimal.peer.protocol.version BLOOM_FILTER Experimental The minimal protocol version used to accept or reject the peers, the next protocols are available: MINIMUM, PONG, BLOOM_FILTER, BLOOM_FILTER_BIP111, WITNESS_VERSION and CURRENT
bitcoinj.max.peer.connections 12 Experimental Adjust the desired number of connections that we will create to peers
bitcoinj.peer.discovery.timeout.millis 5000 Experimental This is how many milliseconds we wait for peer discoveries to return their results
bitcoinj.peer.download.tx.dependency.depth 2147483647 Experimental Configure download of pending transaction dependencies. A change of values only takes effect for newly connected peers
bitcoinj.required.peer.services 0 Experimental Convenience for connecting only to peers that can serve specific services. It will configure suitable peer discoveries, the next services are available: NODE_NETWORK, NODE_GETUTXOS, NODE_BLOOM, NODE_WITNESS, NODE_NETWORK_LIMITED and NODE_BITCOIN_CASH
bitcoinj.min.peer.broadcast.connections 0 Experimental The number of connections that are required before transactions will be broadcast
bitcoinj.max.peers.to.discover.count 100 Experimental Sets the maximum number of peers to discover
bitcoinj.peer.ping.interval.msec 2000 Experimental Sets the period between pings for an individual peer

WARNING: It is not recommended to configure both the pop.cron.schedule and the auto.mine.roundN properties as it can result in too many unconfirmed transactions chained together.

PoP Cron Scheduler

Cron expressions are a compact format for expressing a recurring schedule. For help constructing an expression, visit an online tool, such as http://www.cronmaker.com/. An example schedule that would trigger a mine operation at :00 and :30 minutes every hour is below:

pop.cron.schedule=0 0/30 * * * ?

PoP Application Status Codes

Status of the PoP Miner

Status Description
STARTED
RUNNING Will most often see this state
COMPLETE
FAILED


PoP Files

These are files within the \bin folder:

  • bitcoinj.nodecore-pop.log - log file for BitcoinJ
  • bitcoin-pop-testnet.spvchain
  • bitcoin-pop-testnet.wallet --> Bitcoin wallet, this contains your BTC!
  • ncpop.properties
  • nodecore-pop --> start PoP Miner on linux
  • nodecore-pop.bat --> start PoP Miner on windows
  • veriblock.nodecore-pop.log --> log file for PoP. If you have errors with PoP mining, keep this file for troubleshooting

FAQ

Does the PoP Miner require BTC or tBTC?

BTC.

Previously the TestNet PoP Miner required tBTC (testnet BTC) during the "Mining Sunrise" phase.

After VBK MainNet launch, the VBK TestNet PoP Miner will again use BTC TestNet (tBTC), and the VBK MainNet PoP Miner will use BTC.

How can I see my PoP rewards?

See: PoP_Miner_Rewards

Do I need to run a full Bitcoin node?

No. The PoP Miner uses the bitcoinj library to embed a lightweight Bitcoin wallet (and SPV client), such that one does NOT need to run a full Bitcoin node.

Does the Bitcoin I send to my PoP Wallet need to be confirmed?

Yes. When funding your PoP wallet with "outside" funds, the transaction will need to confirm.

During the course of normal PoP mining, the transactions created by the embedded wallet are considered trusted and therefore the wallet is allowed to create subsequent transactions that spend the pending UTXO.

How do I set the BTC transaction fee?

For "what should the BTC fee be", check: PoP_Miner_Rewards#What_should_the_tBTC_Tx_fee_be.3F. This section explains how to set the fee.

Either set it in the ncpop.properties file:

bitcoin.fee.max=8000
bitcoin.fee.perkb=20000

Or set it via the 'setconfig' command:

setconfig bitcoin.fee.perkb 20000
setconfig bitcoin.fee.max 8000

Note: Make sure to also set 'bitcoin.fee.max'. This is the absolute maximum you're willing to allow the final transaction fee to be. An average transaction may be around 300 bytes (or, 0.3 KB), so, generally the configured maximum should be at least (0.3 KB x bitcoin.fee.perkb).

You can see the current fee by running the 'listconfig' command (HowTo_run_PoP_Miner#listconfig)

How to set up a cron schedule for mining

Properties file is:

pop.cron.schedule=0 0/30 * * * ?

Checkout http://www.cronmaker.com/ for help building the expression

How to auto-mine every Nth round?

The PoP Miner can mine every Nth round. See: HowTo_run_PoP_Miner#VeriBlock_.22Rounds.22

Within a 20 block window:

  • round4 = every 20th block, i.e. keystone (highest reward)
  • round1 = 1,4,7,10,13,16,19
  • round2 = 2,5,8,11,14,17
  • round3 = 3,6,9,12,15,18

Set the ncpop.properties file:

auto.mine.round4=true

Note if you wanted different fees for different rounds, you could have multiple miners run. Miner A could run rounds 1-3 at Fee X, Miner B could run round 4 at fee Y.

Note, it is advised to not use this and the cron expression - pick one or the other.

Can I run multiple PoP Miners?

Yes. Each instance of the miner will require its own unique wallet file (bitcoin-pop.wallet). Do not clone wallet files between instances.

The best way to accomplish this is to make copies of the nodecore-pop folder before launching the miner, so that as each new instance is started, it will create a unique wallet file and download the appropriate SPV chain data. As there is an initial download of Bitcoin blocks, it is also recommended to spin up each new instance of the miner only after the previous completes its download.

  • Option A: Run multiple instances of a PoP Miner on a single machine. You will need to clone the nodecore-pop folder on the machine and use different wallets. Do not run the multiple instances of the same executable with the same wallet. Each copy will have it's own set of files: HowTo_run_PoP_Miner#PoP_Files
  • Option B: Run instances on multiple different machines, all pointed to the same remote NodeCore instance by setting the ncpop.properties 'nodecore.rpc.host=<remote_IP_Here>' (also see [[1]] to set up NodeCore to accept connections from the remote PoP miner)

Can I import a previous BTC wallet?

Yes, just copy bin\bitcoin-pop-*.wallet.

This will carry over the BTC balance.

Troubleshooting

PoP Miner takes a very long time to sync Bitcoin network

If you notice that your PoP miner is taking a long time to download Bitcoin blocks, or fails to completely sync, you can remove the wallet and nodecore-pop.dat files and start a 'fresh' PoP miner. Note, in doing this, you will lose any funds or transactions that are current pending, so it is best to routinely withdraw your balance and start fresh wallets if you plan to mine continuously for long periods of time. The frequency of which you will want to create new wallets will depend entirely on the number of transactions that you submit.

"PoP Miner not ready" warning

Warning Solution
PoP wallet does not contain sufficient funds Send Bitcoins to your PoP BTC wallet address. Run commands showbitcoinbalance (it should be greater than zero), and sendbitcointoaddress.
Could not connect to NodeCore Ensure an instance of NodeCore is running, and you could connect to it from the NC_CLI and run getinfo
Bitcoin blockchain is not downloaded Ensure the ncpop.properties file has a line for bitcoin.network=testnet, and wait for the blockchain to download. There should be a message like "Blockchain downloading: 95%".
Bitcoin service is not ready Check the other warnings. There should be a message like "SUCCESS: Bitcoin service is ready".

I do not have any bitcoin

For mainnet, acquire Bitcoin via normal means.

For testnet, use a faucet to get test bitcoin. You can find a list of popular Bitcoin testnet faucets here: https://en.bitcoin.it/wiki/Testnet#Faucets.

Mining operation action took longer than expected. Operation can be resubmitted.

If you get an error, then try running the resubmit command: PoP_Miner_CommandLine#resubmit

ERROR: Mining operation action took longer than expected. Operation can be resubmitted.

PoP Transaction must complete within a certain period of time to remain relevant, and hence it times out. For example, if there's an abnormally high amount of context headers, that may cause a timeout.

Why does the BTC address change each time I run the showAddress command?

Bitcoin addresses are just a representation of the public key from a public/private key pair. We generate new key pairs every time you run the `showAddress` command. The PoP Miner manages these addresses for you, so you don't have to worry about them. As a privacy best practice, it's best to always use a new address (key pair) every time you receive a payment. The reason the PoP miner (or any Bitcoin wallet) generates a new address each time you receive a payment is for privacy reasons only, because if you use the same address for many transactions, the peers you traded with will be able to identify which other transactions you were involved in, and your identity will be easier to tie to the address. [Credit: A sentence or two for this answer may come from an unknown tech source]


Failed to get PoP publication data from NodeCore

This kind of error implies that NodeCore is not ready.

Try to connect to the NC instance with the NC_CLI and run getinfo:

Failed to get PoP publication data from NodeCore: Status{code=DEADLINE_EXCEEDED, description=deadline exceeded after 14999412514ns, cause=null}

Can you run NC_CLI getinfo?

  • Yes --> Then try to repeat the PoP miner operation.
  • No --> Troubleshoot NodeCore HowTo_run_NodeCore

Command Line Reference

See: PoP_Miner_CommandLine