Difference between revisions of "Home vProgPoW"

From Veriblock Wiki
Jump to: navigation, search
Line 1: Line 1:
See: [[ProgPoW_TestNet]], [[FPGA_Mining]]
See: [[ProgPoW_TestNet]], [[FPGA_Mining]], [[List_of_mining_pools]]

Revision as of 22:02, 21 September 2020

See: ProgPoW_TestNet, FPGA_Mining, List_of_mining_pools

Interested in mining? See here: vProgPoW GPU Mining HowTo


vProgPoW is a heavily modified version of ProgPoW v0.9.3. It is custom-tuned to the VeriBlock blockchain, and intentionally leaves in (and tweaks) the ASIC-friendly "exploit" present in ProgPoW <=0.9.3 as a natural, economically-gated ASIC transition plan for the VeriBlock network.

To learn more about the internal specifics of vProgPoW, how the economically gated ASIC transition plan is designed, and what modifications to ProgPoW were made to create vProgPoW, visit our Medium article.

The original ProgPoW is a memory-hard Proof-of-Work algorithm designed to limit the performance and power efficiency advantages that custom hardware has over commercially-available consumer GPUs. ProgPoW is a proposed replacement to Ethash, Ethereum's current memory-hard algorithm. ProgPoW is based on Ethash, but is modified to have much higher utilization of the compute capabilities of modern GPUs while remaining memory-bound.

vProgPoW Miner and Pool Bounties

To celebrate the launch of vProgPoW on VeriBlock, several bounties are available for collection from GPU miners and pool operators. Starting at the vProgPoW fork height of 1512000, the following bounties will become available:

  1. First five pools to mine 10+ blocks will receive a 20k VBK bounty
  2. First pool to mine a block with over 100 PoP transactions gets 20k VBK, and the miners who mined the block will split 20k VBK based on their contribution to that mining round
  3. First pool to mine a block with the hex patterns "C0DE9" ("code9"), "C0011" ("cool1"), and "F000D" ("foood") will each receive a 20k VBK bounty, and the miners who mined the each hex-pattern-matching block will split 20k VBK based on their contribution to that mining round

This section will be updated as bounties are claimed. Note that some lag between a bounty being completed and it being paid out and updated here to reflect the bounty being claimed is to be expected.


  1. [DONE] Determine new Algorithm (vProgPoW)
  2. [DONE] Internal End-to-End Testing
  3. [DONE] Launch Private TestProgPoW Network
  4. [DONE] Launch Public TestProgPoW Network [6/25/2020]
    1. NodeCore Update
    2. Miner Updates from Private Testing Feedback
  5. [DONE] Network Proves Stability
  6. [DONE] Make Final Decision on vProgPoW Parameters - see: vProgPoW Specifications Medium Article
  7. [DONE] Schedule TestNet Hardfork to vProgPoW
  8. [DONE] Schedule MainNet Hardfork (Exchanges, Pool Admins, Bootstrap Nodes)
  9. [DONE] vProgPoW TestNet Hardfork Occurs - TestNet block 872000 (Friday September 18th, 2020)
  10. vProgPoW MainNet Hardfork Occurs - MainNet block 1512000 (Monday September 21st, 2020)

How to Mine

See: https://wiki.veriblock.org/index.php/HowTo_run_vProgPoW_GPU_Miner


Is the version of vProgPoW Used on TestProgPoW the same as the one used on MainNet?

No, initial testing on the TestProgPoW testnet network was not a finalized version of the vProgPoW PoW algorithm which was eventually selected for use in VeriBlock's mainnet network. The changes vProgPoW made to ProgPoW 0.9.3 can be found on our vProgPoW Medium article.

Old mining software which worked on TestProgPoW will have to be updated to be able to mine on both the MainNet and TestNet blockchains.

Why vProgPoW?

ProgPoW is a standard GPU algorithm with widespread miner and community support, and significant research & vetting.

vProgPoW modifies ProgPoW significantly and offers a gradual, economically gated ASIC transition plan for the VeriBlock network.

Is vProgPoW ASIC Resistant?

No: at low network difficulties, vProgPoW is a GPU-only algorithm. However, at high network difficulties, vProgPoW is specifically designed for ASICs to become viable.

The original ProgPoW was designed (and the specific configuration parameters of ProgPoW selected at the time of implementation are chosen) with current consumer GPUs in mind. Future generations of consumer GPUs are unlikely to keep the same memory bandwidth & compute power balances as current GPUs, and are likely to continue introducing additional specialized circuitry (ex: ray tracing and tensor cores) which are not utilized by ProgPoW. As a result, the further consumer GPUs deviate in the future from their current architecture, the larger of a die size (thus increased yield and reduced cost) advantage a ProgPoW ASIC would have relative to commercially-available GPUs.

While the original ProgPoW algorithm could be continually adapted to new generations of GPUs (and even heavily modified to make use of the specialized circuitry for applications like ray tracing or tensor calculations), doing so would require hard-forking the network for each "re-tuning" of ProgPoW, and would also reduce or eliminate the ability of older generations of cards to participate, making them far less competitive than they would normally be from generation-over-generation performance improvements alone.

As a result, vProgPoW was created, which modifies an ASIC-friendly "vulnerability" in ProgPoW 0.9.3. VeriBlock’s vProgPoW will allow the blockchain to get the best of both worlds: GPU-only mining in the early days, and a gradual economics-powered cut-over to a very simple ASIC design that any ASIC engineering firm could build a competitive small-die chip for, and which could be packaged in small entry-level devices for improved mining decentralization and accessibility.

Does VeriBlock still use vBlake?

No, vProgPoW is a separate Proof-of-Work algorithm.

Does vProgPoW Mining use Stratum?

Yes, the built-in pool software in NodeCore has been upgraded to support the EthereumStratum/1.0.0 protocol with appropriate modifications for vProgPoW (adding block height information to mining.notify) and for VeriBlock (5-byte top-level nonce instead of 8-byte). This modified version of EthereumStratum/1.0.0 is the protocol used by the reference CUDA & OpenCL ProgPoW miner.