PoW HardFork#2866
Merged
Merged
Conversation
quentinlesceller
approved these changes
May 30, 2019
quentinlesceller
added a commit
to blockcypher/libgrin
that referenced
this pull request
May 30, 2019
Member
|
@tromp Can you fix the merge conflict? |
Contributor
Author
|
Fixed conflict. |
Contributor
Author
|
NOTE that while the PoW hardfork happens 32 days earlier on Floonet, at height 216000, it will still have version 1 headers. To make Floonet have version 2 headers at 216000 would require making consensus::valid_header_version dependent on CHAIN_TYPE... |
…ext to consensus::valid_header_version
Contributor
Author
|
ok; moved it forward by a half day |
Member
|
It would seem these tests are hanging in the current commit: |
Member
|
Odd... I ran CI again and it passed this time, but on a second local run I get a different set of tests hanging. Something definitely inconsistent here: |
yeastplume
approved these changes
Jun 12, 2019
yeastplume
pushed a commit
that referenced
this pull request
Jun 27, 2019
* create 2.0.0 branch * fix humansize version * update grin.yml version * PoW HardFork (#2866) * allow version 2 blocks for next 6 months * add cuckarood.rs with working tests * switch cuckaroo to cuckarood at right heights * reorder to reduce conditions * remove _ prefix on used args; fix typo * Make Valid Header Version dependant on ChainType * Rustfmt * Add tests, uncomment header v2 * Rustfmt * Add FLOONET_FIRST_HARD_FORK height and simplify logic * assume floonet stays closer to avg 60s block time * move floonet hf forward by half a day * update version in new block when previous no longer valid * my next commit:-) * micro optimization * Support new Bulletproof rewind scheme (#2848) * Update keychain with new rewind scheme * Refactor: proof builder trait * Update tests, cleanup * rustfmt * Move conversion of SwitchCommitmentType * Add proof build trait to tx builders * Cache hashes in proof builders * Proof builder tests * Add ViewKey struct * Fix some warnings * Zeroize proof builder secrets on drop * Modify mine_block to use wallet V2 API (#2892) * update mine_block to use V2 wallet API * rustfmt * Add version endpoint to node API, rename pool/push (#2897) * add node version API, tweak pool/push parameter * rustfmt * Upate version api call (#2899) * Update version number for next (potential) release * zeroize: Upgrade to v0.9 (#2914) * zeroize: Upgrade to v0.9 * missed Cargo.lock * [PENDING APPROVAL] put phase outs of C32 and beyond on hold (#2714) * put phase outs of C32 and beyond on hold * update tests for phaseouts on hold * Don't wait for p2p-server thread (#2917) Currently p2p.stop() stops and wait for all peers to exit, that's basically all we need. However we also run a TCP listener in this thread which is blocked on `accept` most of the time. We do an attempt to stop it but it would work only if we get an incoming connection during the shutdown, which is a week guarantee. This fix remove joining to p2p-server thread, it stops all peers and makes an attempt to stop the listener. Fixes [#2906] * rustfmt
Makaric
pushed a commit
to Makaric/bitgrin
that referenced
this pull request
May 16, 2026
* create 2.0.0 branch * fix humansize version * update grin.yml version * PoW HardFork (mimblewimble#2866) * allow version 2 blocks for next 6 months * add cuckarood.rs with working tests * switch cuckaroo to cuckarood at right heights * reorder to reduce conditions * remove _ prefix on used args; fix typo * Make Valid Header Version dependant on ChainType * Rustfmt * Add tests, uncomment header v2 * Rustfmt * Add FLOONET_FIRST_HARD_FORK height and simplify logic * assume floonet stays closer to avg 60s block time * move floonet hf forward by half a day * update version in new block when previous no longer valid * my next commit:-) * micro optimization * Support new Bulletproof rewind scheme (mimblewimble#2848) * Update keychain with new rewind scheme * Refactor: proof builder trait * Update tests, cleanup * rustfmt * Move conversion of SwitchCommitmentType * Add proof build trait to tx builders * Cache hashes in proof builders * Proof builder tests * Add ViewKey struct * Fix some warnings * Zeroize proof builder secrets on drop * Modify mine_block to use wallet V2 API (mimblewimble#2892) * update mine_block to use V2 wallet API * rustfmt * Add version endpoint to node API, rename pool/push (mimblewimble#2897) * add node version API, tweak pool/push parameter * rustfmt * Upate version api call (mimblewimble#2899) * Update version number for next (potential) release * zeroize: Upgrade to v0.9 (mimblewimble#2914) * zeroize: Upgrade to v0.9 * missed Cargo.lock * [PENDING APPROVAL] put phase outs of C32 and beyond on hold (mimblewimble#2714) * put phase outs of C32 and beyond on hold * update tests for phaseouts on hold * Don't wait for p2p-server thread (mimblewimble#2917) Currently p2p.stop() stops and wait for all peers to exit, that's basically all we need. However we also run a TCP listener in this thread which is blocked on `accept` most of the time. We do an attempt to stop it but it would work only if we get an incoming connection during the shutdown, which is a week guarantee. This fix remove joining to p2p-server thread, it stops all peers and makes an attempt to stop the listener. Fixes [mimblewimble#2906] * rustfmt
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Grin's first mainnet hardfork!
From well before launch, Grin planned to hardfork every 6 month during the first 2 years.
This is pretty much a necessity for any chain with an ASIC-resistant PoW, as an immutable PoW
falls to ASICs sooner or later. Grin's GPU oriented PoW, Cuckaroo29, is no exception.
The PoW tweak was introduced in the Grin Forum post at https://www.grin-forum.org/t/mid-july-pow-hardfork-cuckaroo29-cuckarood29.
The crucial change in this PR is in function global::create_pow_context:
in combination with a change in consensus::valid_header_version
that requires version 2 at heights [HARD_FORK_INTERVAL, 2 * HARD_FORK_INTERVAL) on mainnet and at heights [FLOONET_FIRST_HARD_FORK, 2 * HARD_FORK_INTERVAL) on flooonet,
with all other changes just putting up the necessary scaffolding to make this work.
If all goes well, then the first block with header version 2, at height WEEK_HEIGHT * 52/2 =
60247*26 = 262080, will roll around on Jul 17, and will have to be solved by either good old Cuckatoo31+, or by the new Cuckarood29. We will be able to test this a few weeks prior on Floonet.
Any nodes that fail to upgrade will not be able to advance to height 262080, as the current consensus::valid_header_version will simply return false. So there cannot actually be any chain split.
One side will advance, and the other will remain stuck until they upgrade as well.
The major work left to be done is in grin-miner. We may initially only offer a CUDA miner there as the CPU mean miner is an exceedingly complex beast.