Commit Graph

394 Commits

Author SHA1 Message Date
tomFlowee 94ae61132b Promote 'interpreter' to the utils lib.
Being able to parse bitcoin-script is useful for users other than
the hub, using the flowee shared libraries they can now do so.
2021-01-21 15:47:46 +01:00
tomFlowee 7b0949031f Rename CHashWriter::GetHash to finalizeHash()
as the expected behavior of 'get*' is a const method, it is harmful to
name a method such when it actually alters the state of the method such
that subsequent calls will produce a different result.
2021-01-20 22:51:48 +01:00
tomFlowee 449dc47871 Move CReserveScript to the only user: the wallet
This does remove the feature that mining can use the internal wallet as
a source of coinbase addresses, but since Flowee doesn't actually ship a
wallet, that was just not a good reason to keep an unused class in the
libs.
2021-01-20 22:43:37 +01:00
tomFlowee 235df9c5f0 Add loading of DSProof from a constbuffer. 2021-01-20 21:35:20 +01:00
tomFlowee defd3950f0 Remove CAmount typedef
The CAmount name is not helpful as its just an int64_t and not a
class, like the name implies. There were a handful of places where
it was passed in as const-ref, as a good example of this actually
creating sub-par code.
2021-01-20 19:59:35 +01:00
tomFlowee 30e28acdd5 Remove unused code.
Move the MutableTransactionSignatureChecker class out of the header and
thereby remove the need to include transaction.h in the header.

This checker was never used in any app, just in the unit tests.

This also fixes includes around.
2021-01-20 18:22:34 +01:00
tomFlowee 1d8ea2a294 Add a testnet4 seeder. 2021-01-13 12:00:32 +01:00
tomFlowee 3fe98afce9 Minor cleanup
This removes some unused includes from common headers and dead code
from some C++ files.
2021-01-05 22:05:25 +01:00
tomFlowee 940871b73e Slight speadups and cleanups
Static analisis of code suggested some const& and found dead code.
2020-12-24 14:13:43 +01:00
tomFlowee 0eea8e5231 Add RPC call validateblocktemplate 2020-12-18 15:35:45 +01:00
tomFlowee 42bbe20cac Change place to look for logs.conf
First search for the logs.conf in the same dir as the -conf file.
2020-12-07 17:35:41 +01:00
tomFlowee 6195f84068 Print IP since peer-ID is useless before handshake 2020-12-07 17:35:10 +01:00
TomZ d430a4be8a Update all usages of boost create_directories
The API throws when the directories already exist, which is quite
unexpected.
This now changes the code to silently ignore these issues in the
knowledge that the immediately following opening of files will
fail with a nice error message.
2020-11-23 14:09:00 +01:00
TomZ 251cc76966 Avoid banning a whitelisted peer on bad headers. 2020-11-18 22:40:46 +01:00
TomZ 27e507cba0 Test and fix reconsiderBlock
This adds a unit test to see if the combination of invalidateBlock and
reconsiderBlock do what we expect to do.

The main issue was that we store an invalidated block in the UTXO and we
forgot to re-validate that on reconsider.

Additionally I avoid writing a lot of unchanged data to the block-index.
2020-11-18 22:08:00 +01:00
TomZ 700c2b59d6 Make controlling blockchain not hidden.
This stops hiding the reconsiderblock and invalidateblock RPC calls.
2020-11-18 16:40:11 +01:00
TomZ d2959dc4c1 Be smarter on reconsiderblock for headers 2020-11-17 23:40:29 +01:00
TomZ 6f2584f14d Fix off-by-one
The test was on the pprev, so we need a +1
2020-11-17 23:11:05 +01:00
TomZ 262706cf8e Make loading faulty data more robust
Instead of an assert when we encouter faulty data this moves the error
up the stack and allows for rollback.
2020-11-17 20:59:11 +01:00
TomZ dad1a0e0c0 Hardcode blockheight for DAA PU
Now the protocol upgrade went smooth, we take the effective details
and hardcode the blockheight for each chain we support.
2020-11-16 15:32:28 +01:00
TomZ 449e84338c Catch more errors while removing the 'unspent' dir content.
We now handle various more corner cases when preparing the unspent dir
for reindexing.
2020-11-10 22:38:50 +01:00
TomZ 9128660272 Fix the hardcoded number for different LANG
atof uses locales, so lets drop the decimals.
2020-11-10 22:18:53 +01:00
TomZ a966ffb129 Remove the hardcoded max message size.
We already had in place the blockSizeAcceptLimit as the limit
on messages, which is now the only limit.

In practice this means when the operator sets the maximum mining
size that we adjust the blockSizeAcceptLimit, if they only set the
blockSizeAcceptLimit, we use that (plus a margin) to limit messages
both on the p2p layer and on the RPC (JSON) layer we change the
limit to be twice the blockSizeAcceptLimit (copied those numbers
from BCHN).
2020-11-10 18:33:07 +01:00
TomZ 8c15b5942f Make scalenet easier to use
This adds a parameter interaction. Starting scalenet sets the
maxblocksize (mining) and blocksizeAcceptLimit to be 250MiB.
2020-11-10 17:25:56 +01:00
TomZ f7729fd08d Update chainparams for the scalenet. 2020-10-30 15:39:56 +01:00
TomZ bf8e4aa3fc Remove silly checkpoint. 2020-10-29 20:17:15 +01:00
TomZ 60f754ef58 Make reindex not delete the 'unspent' dir, but its contents
This is a feature request following the fact that some sysops use a
symlink for the unspent dir and don't want the reindex to delete the
symlink itself.
2020-10-29 18:56:04 +01:00
TomZ 2d90ade9d2 Update specification for testnet4 to actually validate.
Specifically: SCRIPT_ENABLE_SCHNORR.
2020-10-29 18:56:04 +01:00
TomZ 016d9565f2 Remove old detection of outdated UTXO
We have had our new format for so long, this only can give false-
positives now.
2020-10-29 18:56:04 +01:00
TomZ 6d330622f2 Handle whitelisted nodes different for DSProof punishment. 2020-10-27 16:33:08 +01:00
TomZ 42d883d418 A block inherits its 'tree' status. 2020-10-27 16:33:08 +01:00
TomZ 67cf8955b0 Drop usage of old log-style. 2020-10-27 16:33:08 +01:00
TomZ e7b0995b1a Make testnet4 have standardness rules on 2020-10-26 18:21:52 +01:00
TomZ 267e5bf142 Fix typo in comment. 2020-10-23 22:33:24 +02:00
TomZ ff0cec682e Minor cleanups
Avoid copy/paste of comments.
Remove double semicolons.
Add new seeder.
2020-10-13 19:27:35 +02:00
Justaphf 18ca7abb7c Add scalenet 2020-10-02 18:43:52 -04:00
Justaphf 13286db582 Add testnet4 2020-10-02 18:43:52 -04:00
Justaphf 2edd43806f Activate Nov 2019 & May 2020 HFs by height instead of MTP
and update the definitions of the Mainnet, Testnet (v3), and Regtest chain params accordingly.  The heights for all 3 chains were taken by verifying the values in both BU and BCHN code bases.

NOTE: For TestNet v3, there is a 1 block discrepancy between BU (1378461) and BCHN (1378460) for the height of the May 2020 hardfork.  I arbitrarily selected the value from BCHN, I'm not sure which is correct.
2020-10-02 18:43:51 -04:00
TomZ 54329bf9e4 Add new DSP test to check for stupid usage :) 2020-09-30 10:27:51 +02:00
TomZ 14a938d54c Add speed test
To make sure that a pair of really large transactions being used
to create a DSP doesn't cause a blocking thread, this runs a
benchmark on a pair of transactions with 300 inputs each, causing
45k comparisons to be made.
On my laptop this results in 0.6 msecs for this creation of the DSP.
2020-09-29 20:35:41 +02:00
TomZ fdaa6e4a81 Import some improvements from Calin.
* API docs
* Fix possible race condition in addOrphan()
* Reject proofs that violate simple constraints
* clear up possible confusing API (first/double spender getters).
2020-09-29 17:33:20 +02:00
TomZ fcc3b094ef [API] Improve featureset of MempoolSearch
The mempool search now shares its serialization code with the blockchain
transaction fetcher, allowing all the filtering and include flags to work
here too.
This also fixes several bugs and reverts the mempool API change.
Additionally I return the FirstSeenTime for each mempool entry.

There is a slight API breakage in the LiveTransactions service, which as
far as I know is still unused outside of Flowee.
These enum values changed:
Api::LiveTransactions::
  Transaction   20 =>  25
  UnspentState  23 => 26
  OutputScript  24 => 23

The reason for this change is to have the Blockchain namespace in
sync with the LiveTransactions namespace for similar features.
2020-09-14 15:27:15 +02:00
TomZ 88028c3c77 Make flags be initialized faster
This fixes a regression which caused the hub on startup to not get any
validation flags until a new block was added to the chain.
2020-09-11 18:54:21 +02:00
TomZ 6fb9310007 Avoid work
When a block header is rejected before it has been added to the header-
chain, we don't have to update the header-chain.
2020-09-11 18:54:21 +02:00
TomZ db9a80f8eb [API] Add support to query the mempool
This allows a search based on TxId or output-script-hash for
mempool transactions.
We include double spend proof info when available in the reply
2020-09-11 14:07:14 +02:00
TomZ 7e59d0c242 Remove loud log message 2020-08-16 14:53:13 +02:00
TomZ acd142a0e6 Fix logic wrt signed/unsigned
The typedef was an unsigned type, and comparisons failed.
2020-08-16 12:22:00 +02:00
TomZ 679374e923 Revert chain-switching idea
It becomes messy due to the usage of the compact form on block headers.
2020-08-16 12:03:19 +02:00
TomZ ac6b4934f2 Fix off-by-one in isStandard
Our max tx size has always been 100KB, the implementation rejected 100KB
and above, though.
This follows the major clients doing ths same.
2020-08-16 12:03:12 +02:00
TomZ 750bd23b27 Work around badly picked default variable value.
A not yet saved file has file-index zero, which is valid...
Also check this state and allow deletion of rev zero.
2020-08-13 18:28:43 +02:00