Commit Graph

1405 Commits

Author SHA1 Message Date
tomFlowee 018a855e03 Avoid confusion.
People all over the Internet, including on the BCH spec, seem confused
about these enum values. They think they are opcodes.
So lets be clear and rename them to the thing they are. Placeholders or
a return-code.
2021-03-06 14:50:40 +01:00
tomFlowee a2969b1e5d Fix compile with BENCHMARK define on. 2021-03-06 14:44:58 +01:00
tomFlowee b697a17168 Add 'validationOnly' option to API 2021-03-04 15:48:56 +01:00
tomFlowee 630b8422ed Upgrade RPC method to take a blockhash
This also moves the code to search linearly in a block onto the
FastBlock class, for reusal.
2021-03-03 10:17:14 +01:00
tomFlowee 07626a3f3e Fix loading an empty chain 2021-03-03 10:10:57 +01:00
tomFlowee 4d5e7bfb09 Protect node with user-limits for the API.
This introduces several options for public node operators to limit their
nodes usage by 3rd parties, this is aimed at usage of resource-hungry
areas.

We allow limiting the amount of connections any single IP can keep open
with us.
We limit the amount of reconnects we allow in a short number of seconds.
We allow limiting the number of addresses (or scriptHashes) a peer can
register for the node to scan.
The last one is for both the addressMonitorService as well as for the
getBlock filters.

For node operators these items become available using command line
options or config-file options. By default these limits are unlimited as
we assume default usage to be private.
2021-02-26 15:14:14 +01:00
tomFlowee 020c16c27a Put binding info in logfile. 2021-02-26 15:08:23 +01:00
tomFlowee 379e950cde Share code between projects
Move from the rest-server the method returnTemplatePath to the library
and reuse that in the bitcore-proxy client.
2021-02-23 17:55:26 +01:00
tomFlowee 048d5b83a8 make defaults more sane 2021-02-23 17:12:59 +01:00
TomZ b1f8372b10 Improve error messaging for services
We now no longer show the full help page after we've seen a service at
least once. Because we know its not a lack of config that caused the
issue.
2021-02-22 16:31:09 +01:00
TomZ 74be8f9304 Register losing services better
This implements two TODOs, we now unset the services in our registry
when they disconnect.
This allows us to run with multiple backends as failover more stable.
2021-02-22 16:31:09 +01:00
TomZ 3dbb2672b9 Api Docs 2021-02-22 15:53:32 +01:00
TomZ 046c956230 Avoid sideeffects after a move. 2021-02-22 15:52:34 +01:00
TomZ 1de1496350 UX fix for servers
We only have the option for `--debug` when it is regarding a client (as
oppossed to a server) and when we build a debug build.
Only add the option for users to set when we actually process it.
2021-02-22 14:09:19 +01:00
tomFlowee b83fd08789 Add chainReorged msg to BlockNotificationService
When blocks are reverted clients likely want to know. This gives them
the information the moment it becomes clear.
2021-02-19 13:43:56 +01:00
tomFlowee 29082a1066 Follow coding guide; lowercase method names 2021-02-19 13:43:56 +01:00
tomFlowee 9a33788090 Properly expire older items. 2021-02-18 12:03:56 +01:00
tomFlowee 64bfb5d02d Stop using boost ptime
Its overly complex and too difficult to even inspect for debugging.
2021-02-18 10:06:25 +01:00
tomFlowee 950ca2569a Refactor global threadpool usage.
Use C++11 features instead of boost, and force calling the reserve
method in the getter since its too easy to forget reserve otherwise.
2021-02-18 09:59:00 +01:00
tomFlowee abfc90d99a assert -> if 2021-02-17 22:59:35 +01:00
tomFlowee 9c3d7ddaf1 Add net protection for APIServer 2021-02-17 22:49:19 +01:00
tomFlowee 85e089b155 Calculate needed space better
We calculate the needed space for the network buffers before we fill them,
as new features are added guestimating ended up short.
Lets do the real calculation.
2021-02-17 17:11:24 +01:00
tomFlowee 8eeea08f99 Add support for BitcoinScriptHashed filtering
Server already added it before, lets allow more clients to use it.
2021-02-17 17:09:43 +01:00
tomFlowee b6fd629892 Replace boost mutex with std 2021-02-16 22:08:16 +01:00
tomFlowee bf88ee6218 Check inputs better 2021-02-16 19:22:33 +01:00
tomFlowee 08c04b3b25 Assume less and check the inputs better
Should an Tx::Iterator be created on some random data we are now
checking the read values better.
2021-02-16 18:56:13 +01:00
tomFlowee aea317cf71 Be better at handling bad input.
When the transaction offset is wrong and doesn't parse we turn the
generic runtime_exception into one that goes back to the API caller.
Also catch those generic exceptions on the server level to avoid this
kind of error from disconnecting a peer.
2021-02-16 18:36:40 +01:00
tomFlowee afdaff5188 whitespace 2021-02-15 14:09:35 +01:00
tomFlowee 4f37f4ea2f Don't spam 2021-02-12 20:59:41 +01:00
tomFlowee da2a8843ec call addressUsedInOutput callback more
When getting data from the mempool based on address, we also want to call
the addressUsedInOutput() callback, in order to be consistent.

We pass in the blockheight and offset in block being -1, though.
2021-02-11 22:52:17 +01:00
tomFlowee b4df28bd90 Avoid programming errors, add assert. 2021-02-11 15:23:35 +01:00
tomFlowee efa23bd2db Extend Live::GetTransaction to search on address too
This allows API users to search the mempool on address or on txid.

This also adds a new unit test testing this functionality
2021-02-11 15:21:54 +01:00
tomFlowee 47702ad4a4 Port getaddress to be a native call. 2021-02-11 14:15:23 +01:00
tomFlowee 6a2dc97e25 Search harder for logs.conf 2021-02-07 18:07:22 +01:00
tomFlowee d3f1d7f454 Whitepace and minor fixes. 2021-02-05 17:32:36 +01:00
tomFlowee ceb44cc3b5 Remove dead code. 2021-02-05 17:26:40 +01:00
tomFlowee f026e626a1 Add notifications for the p2pnet lib. 2021-02-05 17:22:52 +01:00
tomFlowee 70f363cabb Also allow downloading of dsproofs. 2021-02-04 18:09:38 +01:00
tomFlowee 44e8717d1e Send a MEMPOOL message on SPV/merkleblock sync. 2021-02-04 17:39:44 +01:00
tomFlowee 1f2f7c36d2 Port the boost container to the std one.
The unordered_map is now available in stl, and said to be better,
so lets slowly switch over
2021-02-03 16:31:46 +01:00
tomFlowee 1003ad716b Fixlets in log output consistency 2021-02-03 14:41:51 +01:00
tomFlowee 5d6d09e4d6 Assign segments only to good peers
Instead of assigning a privacy segment at connect, wait until we have
determined if this peer is on the same chain as us before we allocate a
peer slot.

This also helps us limit the amount of peers we send our bloom filter to.
2021-02-03 14:41:51 +01:00
tomFlowee 447a2e12e6 Add new action
When a peer never sends headers we now ban it after a timeout based on
the idea that we don't even know if this peer is on the same chain as we
are.
2021-02-03 14:41:51 +01:00
tomFlowee 5baaf984ab Add API docs
also add setInterval()
2021-02-03 14:33:38 +01:00
tomFlowee 0824cabbee Sanitize log
Seems some systems are not happy if we print a string that has zeros in it.
This sanitizes the message to replace zeros with spaces.
2021-02-03 13:13:21 +01:00
tomFlowee adfe4081cb Update copyright notice and email address 2021-02-02 13:08:07 +01:00
tomFlowee 3dff9b157d cleanup includes 2021-02-02 13:05:19 +01:00
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