header version 4 accompanied by new AR PoW (#3334)

This commit is contained in:
John Tromp
2020-06-04 15:05:56 +02:00
committed by GitHub
parent 450d235358
commit f4295917a0
6 changed files with 339 additions and 39 deletions
+65 -15
View File
@@ -13,7 +13,7 @@
use grin_core::consensus::{
secondary_pow_ratio, valid_header_version, FLOONET_FIRST_HARD_FORK, FLOONET_SECOND_HARD_FORK,
YEAR_HEIGHT,
FLOONET_THIRD_HARD_FORK, HARD_FORK_INTERVAL,
};
use grin_core::core::HeaderVersion;
use grin_core::global;
@@ -84,7 +84,6 @@ fn hard_forks() {
FLOONET_FIRST_HARD_FORK,
HeaderVersion(1)
));
assert!(!valid_header_version(YEAR_HEIGHT, HeaderVersion(1)));
assert!(valid_header_version(
FLOONET_SECOND_HARD_FORK - 1,
HeaderVersion(2)
@@ -105,19 +104,70 @@ fn hard_forks() {
FLOONET_SECOND_HARD_FORK,
HeaderVersion(1)
));
assert!(!valid_header_version(YEAR_HEIGHT - 1, HeaderVersion(2)));
assert!(valid_header_version(YEAR_HEIGHT - 1, HeaderVersion(3)));
assert!(valid_header_version(YEAR_HEIGHT, HeaderVersion(3)));
assert!(valid_header_version(YEAR_HEIGHT + 1, HeaderVersion(3)));
// v4 not active yet
assert!(!valid_header_version(YEAR_HEIGHT * 3 / 2, HeaderVersion(4)));
assert!(!valid_header_version(YEAR_HEIGHT * 3 / 2, HeaderVersion(3)));
assert!(!valid_header_version(YEAR_HEIGHT * 3 / 2, HeaderVersion(2)));
assert!(!valid_header_version(YEAR_HEIGHT * 3 / 2, HeaderVersion(1)));
assert!(!valid_header_version(YEAR_HEIGHT * 2, HeaderVersion(3)));
assert!(!valid_header_version(
YEAR_HEIGHT * 3 / 2 + 1,
assert!(valid_header_version(
FLOONET_THIRD_HARD_FORK - 1,
HeaderVersion(3)
));
assert!(valid_header_version(
FLOONET_THIRD_HARD_FORK,
HeaderVersion(4)
));
assert!(valid_header_version(
FLOONET_THIRD_HARD_FORK + 1,
HeaderVersion(4)
));
assert!(!valid_header_version(
FLOONET_THIRD_HARD_FORK,
HeaderVersion(3)
));
assert!(!valid_header_version(
FLOONET_THIRD_HARD_FORK,
HeaderVersion(2)
));
assert!(!valid_header_version(
FLOONET_THIRD_HARD_FORK,
HeaderVersion(1)
));
assert!(!valid_header_version(
HARD_FORK_INTERVAL * 2 - 1,
HeaderVersion(1)
));
assert!(!valid_header_version(
HARD_FORK_INTERVAL * 2 - 1,
HeaderVersion(2)
));
assert!(valid_header_version(
HARD_FORK_INTERVAL * 2 - 1,
HeaderVersion(3)
));
assert!(valid_header_version(
HARD_FORK_INTERVAL * 2,
HeaderVersion(3)
));
assert!(valid_header_version(
HARD_FORK_INTERVAL * 2 + 1,
HeaderVersion(3)
));
// v5 not active yet
assert!(!valid_header_version(
HARD_FORK_INTERVAL * 4,
HeaderVersion(5)
));
assert!(!valid_header_version(
HARD_FORK_INTERVAL * 4,
HeaderVersion(4)
));
assert!(!valid_header_version(
HARD_FORK_INTERVAL * 4,
HeaderVersion(3)
));
assert!(!valid_header_version(
HARD_FORK_INTERVAL * 4,
HeaderVersion(2)
));
assert!(!valid_header_version(
HARD_FORK_INTERVAL * 4,
HeaderVersion(1)
));
}
+62 -17
View File
@@ -438,25 +438,70 @@ fn hard_forks() {
assert!(valid_header_version(0, HeaderVersion(1)));
assert!(valid_header_version(10, HeaderVersion(1)));
assert!(!valid_header_version(10, HeaderVersion(2)));
assert!(valid_header_version(YEAR_HEIGHT / 2 - 1, HeaderVersion(1)));
assert!(valid_header_version(YEAR_HEIGHT / 2, HeaderVersion(2)));
assert!(valid_header_version(YEAR_HEIGHT / 2 + 1, HeaderVersion(2)));
assert!(!valid_header_version(YEAR_HEIGHT / 2, HeaderVersion(1)));
assert!(!valid_header_version(YEAR_HEIGHT, HeaderVersion(1)));
assert!(valid_header_version(
HARD_FORK_INTERVAL - 1,
HeaderVersion(1)
));
assert!(!valid_header_version(HARD_FORK_INTERVAL, HeaderVersion(1)));
assert!(valid_header_version(HARD_FORK_INTERVAL, HeaderVersion(2)));
assert!(valid_header_version(
HARD_FORK_INTERVAL + 1,
HeaderVersion(2)
));
assert!(valid_header_version(YEAR_HEIGHT - 1, HeaderVersion(2)));
assert!(valid_header_version(YEAR_HEIGHT, HeaderVersion(3)));
assert!(valid_header_version(YEAR_HEIGHT + 1, HeaderVersion(3)));
assert!(!valid_header_version(YEAR_HEIGHT, HeaderVersion(2)));
assert!(!valid_header_version(YEAR_HEIGHT * 3 / 2, HeaderVersion(2)));
// v4 not active yet
assert!(!valid_header_version(YEAR_HEIGHT * 3 / 2, HeaderVersion(4)));
assert!(!valid_header_version(YEAR_HEIGHT * 3 / 2, HeaderVersion(3)));
assert!(!valid_header_version(YEAR_HEIGHT * 3 / 2, HeaderVersion(2)));
assert!(!valid_header_version(YEAR_HEIGHT * 3 / 2, HeaderVersion(1)));
assert!(!valid_header_version(YEAR_HEIGHT * 2, HeaderVersion(3)));
assert!(valid_header_version(
HARD_FORK_INTERVAL * 2 - 1,
HeaderVersion(2)
));
assert!(!valid_header_version(
YEAR_HEIGHT * 3 / 2 + 1,
HARD_FORK_INTERVAL * 2,
HeaderVersion(2)
));
assert!(valid_header_version(
HARD_FORK_INTERVAL * 2,
HeaderVersion(3)
));
assert!(valid_header_version(
HARD_FORK_INTERVAL * 2 + 1,
HeaderVersion(3)
));
assert!(valid_header_version(
HARD_FORK_INTERVAL * 3 - 1,
HeaderVersion(3)
));
assert!(!valid_header_version(
HARD_FORK_INTERVAL * 3,
HeaderVersion(3)
));
assert!(valid_header_version(
HARD_FORK_INTERVAL * 3,
HeaderVersion(4)
));
assert!(valid_header_version(
HARD_FORK_INTERVAL * 3 + 1,
HeaderVersion(4)
));
// v5 not active yet
assert!(!valid_header_version(
HARD_FORK_INTERVAL * 4,
HeaderVersion(5)
));
assert!(!valid_header_version(
HARD_FORK_INTERVAL * 4,
HeaderVersion(4)
));
assert!(!valid_header_version(
HARD_FORK_INTERVAL * 4,
HeaderVersion(3)
));
assert!(!valid_header_version(
HARD_FORK_INTERVAL * 4,
HeaderVersion(2)
));
assert!(!valid_header_version(
HARD_FORK_INTERVAL * 4,
HeaderVersion(1)
));
}