Difference between revisions of "Home vProgPoW"

From Veriblock Wiki
Jump to: navigation, search
Line 5: Line 5:
 
== Overview ==
 
== Overview ==
  
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. While building a custom chip for ProgPoW is possible, such a device would likely be very similar to a modern consumer GPU and have similar performance-per-watt.
+
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.
  
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.
+
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 [https://medium.com/@veriblock/veriblock-vprogpow-gpu-mining-and-economically-gated-asic-transition-plans-c62a9046e1fa Medium article].
 +
 
 +
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.
  
For more information on ProgPoW, please see: https://medium.com/@ifdefelse/understanding-progpow-performance-and-tuning-d72713898db3
 
  
 
== vProgPoW Miner and Pool Bounties ==
 
== vProgPoW Miner and Pool Bounties ==
Line 22: Line 23:
 
== Roadmap ==
 
== Roadmap ==
  
# [DONE] Determine new Algorithm (ProgPoW)
+
# [DONE] Determine new Algorithm (vProgPoW)
 
# [DONE] Internal End-to-End Testing
 
# [DONE] Internal End-to-End Testing
 
# [DONE] Launch Private TestProgPoW Network
 
# [DONE] Launch Private TestProgPoW Network
Line 29: Line 30:
 
## Miner Updates from Private Testing Feedback
 
## Miner Updates from Private Testing Feedback
 
# [DONE] Network Proves Stability
 
# [DONE] Network Proves Stability
# [DONE] Make Final Decision on ProgPoW Parameters - see: https://medium.com/@veriblock/veriblock-vprogpow-gpu-mining-and-economically-gated-asic-transition-plans-c62a9046e1fa
+
# [DONE] Make Final Decision on vProgPoW Parameters - see: https://medium.com/@veriblock/veriblock-vprogpow-gpu-mining-and-economically-gated-asic-transition-plans-c62a9046e1fa
# [DONE] Schedule TestNet Hardfork to ProgPoW
+
# [DONE] Schedule TestNet Hardfork to vProgPoW
 
# [DONE] Schedule Hardfork of MainNet (Exchanges, Pool Admins, Bootstrap Nodes)
 
# [DONE] Schedule Hardfork of MainNet (Exchanges, Pool Admins, Bootstrap Nodes)
# [DONE] ProgPoW TestNet Hardfork Occurs - tentatively Friday, Sept 18
+
# [DONE] vProgPoW TestNet Hardfork Occurs - tentatively Friday, Sept 18
# ProgPoW MainNet Hardfork Occurs - block 1512000 (which should occur Monday at some time)
+
# vProgPoW MainNet Hardfork Occurs - block 1512000 (which should occur Monday at some time)
  
 
== How to Mine ==
 
== How to Mine ==
Line 41: Line 42:
 
== FAQ ==
 
== FAQ ==
  
=== Is There a Reward for Mining ProgPoW Testnet? ===
+
=== Is There a Reward for Mining vProgPoW Testnet? ===
  
Currently ProgPoW is being tested by community volunteers.
+
Currently vProgPoW is being tested by community volunteers.
  
 
There may be additional bounties to help incentive various testing.  
 
There may be additional bounties to help incentive various testing.  
  
=== Is the Version of ProgPoW Used on TestProgPoW Network Finalized? ===
+
=== 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.
 +
 
  
No, the version of ProgPoW used on the TestProgPoW network does not reflect the final configuration of the ProgPoW network which will be used in MainNet.
 
  
=== Why ProgPoW? ===
+
=== Why vProgPoW? ===
  
 
ProgPoW is a standard GPU algorithm with widespread miner and community support, and significant research & vetting.
 
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 ProgPoW Truly ASIC Resistant? ===
 
=== Is ProgPoW Truly ASIC Resistant? ===
Line 63: Line 69:
 
While ProgPoW 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.
 
While ProgPoW 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.
  
=== Does NodeCore Still Use vBlake? ===
+
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, ProgPoW is a separate Proof-of-Work algorithm.
+
No, vProgPoW is a separate Proof-of-Work algorithm.
  
 
=== Does This Use Stratum? ===
 
=== Does This 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 ProgPoW (adding block height information to mining.notify) and for VeriBlock (4-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.
+
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.

Revision as of 17:44, 21 September 2020

See: ProgPoW_TestNet, FPGA_Mining

Overview

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.

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.

Roadmap

  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: https://medium.com/@veriblock/veriblock-vprogpow-gpu-mining-and-economically-gated-asic-transition-plans-c62a9046e1fa
  7. [DONE] Schedule TestNet Hardfork to vProgPoW
  8. [DONE] Schedule Hardfork of MainNet (Exchanges, Pool Admins, Bootstrap Nodes)
  9. [DONE] vProgPoW TestNet Hardfork Occurs - tentatively Friday, Sept 18
  10. vProgPoW MainNet Hardfork Occurs - block 1512000 (which should occur Monday at some time)

How to Mine

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

FAQ

Is There a Reward for Mining vProgPoW Testnet?

Currently vProgPoW is being tested by community volunteers.

There may be additional bounties to help incentive various testing.

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.


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 ProgPoW Truly ASIC Resistant?

It is widely believed that the ASIC for ProgPoW would have minimal chip die size and power consumption advantages over existing consumer GPUs.

However, ProgPoW is 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 ProgPoW 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 This 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.