Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F13711175
D240.id597.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
10 KB
Subscribers
None
D240.id597.diff
View Options
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
Details
Attached
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)
Attached To
D240: Make sure the maximum block size is greater than 1MB
Event Timeline
Log In to Comment