Page MenuHomePhabricator

D240.id597.diff
No OneTemporary

D240.id597.diff

diff --git a/qa/rpc-tests/abc-cmdline.py b/qa/rpc-tests/abc-cmdline.py
--- a/qa/rpc-tests/abc-cmdline.py
+++ b/qa/rpc-tests/abc-cmdline.py
@@ -56,18 +56,17 @@
self.check_subversion("/Bitcoin ABC:.*\(EB2\.0\)/")
print(" Attempt to set below legacy limit of 1MB - try %d bytes" %
- (LEGACY_MAX_BLOCK_SIZE - 1))
+ LEGACY_MAX_BLOCK_SIZE)
outputchecker = OutputChecker()
stop_node(self.nodes[0], 0)
try:
- self.extra_args = [["-excessiveblocksize=%d" %
- (LEGACY_MAX_BLOCK_SIZE - 1)]]
+ self.extra_args = [["-excessiveblocksize=%d" % LEGACY_MAX_BLOCK_SIZE]]
self.nodes[0] = start_node(0, self.options.tmpdir,
self.extra_args[0],
stderr_checker=outputchecker)
except Exception as e:
assert(outputchecker.contains(
- 'Error: Excessive block size must be >= 1,000,000 bytes (1MB)'))
+ 'Error: Excessive block size must be > 1,000,000 bytes (1MB)'))
assert_equal('bitcoind exited with status 1 during initialization', str(e))
else:
raise AssertionError("Must not accept excessiveblocksize"
@@ -83,13 +82,14 @@
stderr_checker=outputchecker)
except Exception as e:
assert(outputchecker.contains(
- 'Error: Max generated block size (blockmaxsize) cannot '
- 'exceed the excessive block size (excessiveblocksize)'))
+ 'Error: Max generated block size (blockmaxsize) cannot be '
+ 'lower than 1MB or exceed the excessive block size (excessiveblocksize)'))
assert_equal('bitcoind exited with status 1 during initialization', str(e))
else:
raise AssertionError('Must not accept excessiveblocksize'
' below blockmaxsize')
+
def run_test(self):
# Run tests on -excessiveblocksize option
diff --git a/qa/rpc-tests/abc-rpc.py b/qa/rpc-tests/abc-rpc.py
--- a/qa/rpc-tests/abc-rpc.py
+++ b/qa/rpc-tests/abc-rpc.py
@@ -38,22 +38,22 @@
assert_equal(ebs, DEFAULT_MAX_BLOCK_SIZE)
# Check that setting to legacy size is ok
- self.nodes[0].setexcessiveblock(LEGACY_MAX_BLOCK_SIZE)
+ self.nodes[0].setexcessiveblock(LEGACY_MAX_BLOCK_SIZE + 1)
getsize = self.nodes[0].getexcessiveblock()
ebs = getsize['excessiveBlockSize']
- assert_equal(ebs, LEGACY_MAX_BLOCK_SIZE)
+ assert_equal(ebs, LEGACY_MAX_BLOCK_SIZE + 1)
# Check that going below legacy size is not accepted
try:
- self.nodes[0].setexcessiveblock(LEGACY_MAX_BLOCK_SIZE - 1)
+ self.nodes[0].setexcessiveblock(LEGACY_MAX_BLOCK_SIZE)
except JSONRPCException as e:
assert("Invalid parameter, excessiveblock must be larger than %d" % LEGACY_MAX_BLOCK_SIZE
in e.error['message'])
else:
- raise AssertionError("Must not accept excessiveblock values < %d bytes" % LEGACY_MAX_BLOCK_SIZE)
+ raise AssertionError("Must not accept excessiveblock values <= %d bytes" % LEGACY_MAX_BLOCK_SIZE)
getsize = self.nodes[0].getexcessiveblock()
ebs = getsize['excessiveBlockSize']
- assert_equal(ebs, LEGACY_MAX_BLOCK_SIZE)
+ assert_equal(ebs, LEGACY_MAX_BLOCK_SIZE + 1)
# Check setting to 2MB
self.nodes[0].setexcessiveblock(2 * ONE_MEGABYTE)
diff --git a/qa/rpc-tests/p2p-fullblocktest.py b/qa/rpc-tests/p2p-fullblocktest.py
--- a/qa/rpc-tests/p2p-fullblocktest.py
+++ b/qa/rpc-tests/p2p-fullblocktest.py
@@ -74,8 +74,6 @@
self.test.add_all_connections(self.nodes)
# Start up network handling in another thread
NetworkThread().start()
- # Set the blocksize to legacy cap (1MB) as initial condition
- self.nodes[0].setexcessiveblock(LEGACY_MAX_BLOCK_SIZE)
self.test.run()
def add_transactions_to_block(self, block, tx_list):
diff --git a/src/config.cpp b/src/config.cpp
--- a/src/config.cpp
+++ b/src/config.cpp
@@ -9,7 +9,8 @@
bool GlobalConfig::SetMaxBlockSize(uint64_t maxBlockSize) {
// Do not allow maxBlockSize to be set below historic 1MB limit
- if (maxBlockSize < LEGACY_MAX_BLOCK_SIZE) {
+ // It cannot be equal either because of the "must be big" UAHF rule.
+ if (maxBlockSize <= LEGACY_MAX_BLOCK_SIZE) {
return false;
}
diff --git a/src/init.cpp b/src/init.cpp
--- a/src/init.cpp
+++ b/src/init.cpp
@@ -751,7 +751,7 @@
HelpMessageOpt("-excessiveblocksize=<n>",
strprintf(_("Do not accept blocks larger than this "
"limit, in bytes (default: %d)"),
- DEFAULT_MAX_BLOCK_SIZE));
+ LEGACY_MAX_BLOCK_SIZE));
strUsage += HelpMessageOpt(
"-incrementalrelayfee=<amt>",
strprintf(
@@ -1386,25 +1386,21 @@
// Configure excessive block size.
const uint64_t nProposedExcessiveBlockSize =
GetArg("-excessiveblocksize", DEFAULT_MAX_BLOCK_SIZE);
- if (nProposedExcessiveBlockSize < ONE_MEGABYTE) {
+ if (!config.SetMaxBlockSize(nProposedExcessiveBlockSize)) {
return InitError(
- _("Excessive block size must be >= 1,000,000 bytes (1MB)"));
- } else {
- if (!config.SetMaxBlockSize(nProposedExcessiveBlockSize)) {
- return InitError(strprintf(
- _("Unable to validate excessive block size value (%d)"),
- nProposedExcessiveBlockSize));
- }
- assert(nProposedExcessiveBlockSize == config.GetMaxBlockSize());
+ _("Excessive block size must be > 1,000,000 bytes (1MB)"));
}
// Check blockmaxsize does not exceed maximum accepted block size.
+ // Also checks that it isn't smaller than 1MB, as to make sure we can
+ // satisfy the "must be big" UAHF rule.
const uint64_t nProposedMaxGeneratedBlockSize =
GetArg("-blockmaxsize", DEFAULT_MAX_GENERATED_BLOCK_SIZE);
- if (nProposedMaxGeneratedBlockSize > config.GetMaxBlockSize()) {
+ if (nProposedMaxGeneratedBlockSize <= LEGACY_MAX_BLOCK_SIZE ||
+ nProposedMaxGeneratedBlockSize > config.GetMaxBlockSize()) {
return InitError(
- _("Max generated block size (blockmaxsize) cannot exceed the "
- "excessive block size (excessiveblocksize)"));
+ _("Max generated block size (blockmaxsize) cannot be lower than "
+ "1MB or exceed the excessive block size (excessiveblocksize)"));
}
const int64_t nProposedUAHFStartTime =
diff --git a/src/rpc/abc.cpp b/src/rpc/abc.cpp
--- a/src/rpc/abc.cpp
+++ b/src/rpc/abc.cpp
@@ -54,7 +54,7 @@
}
// Do not allow maxBlockSize to be set below historic 1MB limit
- if (ebs < LEGACY_MAX_BLOCK_SIZE)
+ if (ebs <= LEGACY_MAX_BLOCK_SIZE)
throw JSONRPCError(
RPC_INVALID_PARAMETER,
std::string(
diff --git a/src/test/config_tests.cpp b/src/test/config_tests.cpp
--- a/src/test/config_tests.cpp
+++ b/src/test/config_tests.cpp
@@ -18,10 +18,11 @@
BOOST_CHECK(!config.SetMaxBlockSize(0));
BOOST_CHECK(!config.SetMaxBlockSize(12345));
BOOST_CHECK(!config.SetMaxBlockSize(LEGACY_MAX_BLOCK_SIZE - 1));
+ BOOST_CHECK(!config.SetMaxBlockSize(LEGACY_MAX_BLOCK_SIZE));
- // LEGACY_MAX_BLOCK_SIZE
- BOOST_CHECK(config.SetMaxBlockSize(LEGACY_MAX_BLOCK_SIZE));
- BOOST_CHECK_EQUAL(config.GetMaxBlockSize(), LEGACY_MAX_BLOCK_SIZE);
+ // LEGACY_MAX_BLOCK_SIZE + 1
+ BOOST_CHECK(config.SetMaxBlockSize(LEGACY_MAX_BLOCK_SIZE + 1));
+ BOOST_CHECK_EQUAL(config.GetMaxBlockSize(), LEGACY_MAX_BLOCK_SIZE + 1);
// 2MB
BOOST_CHECK(config.SetMaxBlockSize(2 * ONE_MEGABYTE));
@@ -38,8 +39,8 @@
// Setting it back down
BOOST_CHECK(config.SetMaxBlockSize(7 * ONE_MEGABYTE));
BOOST_CHECK_EQUAL(config.GetMaxBlockSize(), 7 * ONE_MEGABYTE);
- BOOST_CHECK(config.SetMaxBlockSize(ONE_MEGABYTE));
- BOOST_CHECK_EQUAL(config.GetMaxBlockSize(), ONE_MEGABYTE);
+ BOOST_CHECK(config.SetMaxBlockSize(ONE_MEGABYTE + 1));
+ BOOST_CHECK_EQUAL(config.GetMaxBlockSize(), ONE_MEGABYTE + 1);
}
BOOST_AUTO_TEST_CASE(chain_params) {
diff --git a/src/test/excessiveblock_tests.cpp b/src/test/excessiveblock_tests.cpp
--- a/src/test/excessiveblock_tests.cpp
+++ b/src/test/excessiveblock_tests.cpp
@@ -34,11 +34,14 @@
BOOST_CHECK_THROW(CallRPC(std::string("setexcessiveblock ") +
std::to_string(ONE_MEGABYTE - 1)),
std::runtime_error);
+ BOOST_CHECK_THROW(CallRPC(std::string("setexcessiveblock ") +
+ std::to_string(ONE_MEGABYTE)),
+ std::runtime_error);
BOOST_CHECK_NO_THROW(CallRPC(std::string("setexcessiveblock ") +
- std::to_string(ONE_MEGABYTE)));
- BOOST_CHECK_NO_THROW(CallRPC(std::string("setexcessiveblock ") +
std::to_string(ONE_MEGABYTE + 1)));
+ BOOST_CHECK_NO_THROW(CallRPC(std::string("setexcessiveblock ") +
+ std::to_string(ONE_MEGABYTE + 10)));
// Default can be higher than 1MB in future - test it too
BOOST_CHECK_NO_THROW(CallRPC(std::string("setexcessiveblock ") +
diff --git a/src/test/miner_tests.cpp b/src/test/miner_tests.cpp
--- a/src/test/miner_tests.cpp
+++ b/src/test/miner_tests.cpp
@@ -731,8 +731,8 @@
BOOST_CHECK(IsUAHFenabledForCurrentBlock(config));
- // Test around historical 1MB
- config.SetMaxBlockSize(ONE_MEGABYTE);
+ // Test around historical 1MB (plus one byte because that's mandatory)
+ config.SetMaxBlockSize(ONE_MEGABYTE + 1);
CheckBlockMaxSize(chainparams, 0, 1000);
CheckBlockMaxSize(chainparams, 1000, 1000);
CheckBlockMaxSize(chainparams, 1001, 1001);
@@ -740,8 +740,8 @@
CheckBlockMaxSize(chainparams, ONE_MEGABYTE - 1001, ONE_MEGABYTE - 1001);
CheckBlockMaxSize(chainparams, ONE_MEGABYTE - 1000, ONE_MEGABYTE - 1000);
- CheckBlockMaxSize(chainparams, ONE_MEGABYTE - 999, ONE_MEGABYTE - 1000);
- CheckBlockMaxSize(chainparams, ONE_MEGABYTE, ONE_MEGABYTE - 1000);
+ CheckBlockMaxSize(chainparams, ONE_MEGABYTE - 999, ONE_MEGABYTE - 999);
+ CheckBlockMaxSize(chainparams, ONE_MEGABYTE, ONE_MEGABYTE - 999);
// Test around higher limit such as 8MB
config.SetMaxBlockSize(EIGHT_MEGABYTES);

File Metadata

Mime Type
text/plain
Expires
Sat, Apr 26, 10:40 (1 h, 14 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5573318
Default Alt Text
D240.id597.diff (10 KB)

Event Timeline