amrhf builds leak Boost symbols, so @laanwj’s linker script hack was
added back to armhf builds.
Also added ld-linux-armhf.so.3 to the list of allowed libraries in
symbol-check.py.
Many people use development boards (Raspberry Pi 2, Banana Pi,
Odroid boards, etc) to run full nodes in CLI mode.
The only option they had until now is to compile their own from source.
Even though many tutorials are available, it is still not trivial for
non tech-savvy users.
Providing an officially built armhf binary would provide non tech-savvy
users an easy ramp-on to Bitcoin Classic.
*** GUI has been disabled for this build — according to Qt docs it
needs to be compiled on with device-specific headers. Most armhf users
use it in CLI mode only anyway.
Tested binaries on Raspberry Pi2, Odroid C1 and Odroid XU4.
Added original Bitcoin white paper.
This feels at home because it really is the basis of the project. A PDF is wanted because this document is not supposed to be edited.
On some systems, these tests fail because the default 200
BIP101-version blocks are mined before the test begins, causing
them to think BIP65 is already in effect.
This is a belt-and-suspenders fix to make sure CreateNewBlock() or external mining software can never produce a block that violates the MAX_BLOCK_SIGHASH rule.
It does this by rejecting transactions that do too much signature hashing -- they are not added to the memory pool, and so will not be considered for inclusion in new blocks.
How the code works: every transaction uses up some fraction of the MAX_BLOCK_SIZE limit and the MAX_BLOCK_SIGHASH limit. If a transaction uses up a larger fraction of the SIGHASH limit than the SIZE limit, it is rejected. That ensures that no matter which transactions are selected for the block, the SIZE limit will be hit before the SIGHASH limit.
This is a much simpler solution than modifying CreateNewBlock or external transaction selection software to keep track of the SIZE limit, the SIGOPS limit, AND the new SIGHASH limit.
This is belt-and-suspenders because, in practice, the 100,000-byte IsStandard size limit prevents the block SIGHASH limit from being hit.
The IsStandard code related to the old SIGOPS limit is left unchanged.
Conflicts:
src/main.cpp
Adds a ValidationCostTracker class that is passed to
CheckInputs() / CScriptCheck() to keep track of the exact number
of signature operations required to validate a block, and the
exact number of bytes hashed to compute signature hashes.
Also extends CHashWriter to keep track of number of bytes hashed.
Signature operations per block are limited to MAX_BLOCK_SIGOPS
(unchanged at 20,000)
Bytes hashed to compute signatures is limited to MAX_BLOCK_SIGHASH
(1.3 GB in this commit).
Conflicts:
src/main.cpp
src/miner.cpp
src/script/interpreter.h