CalDescent
f0136a5018
Include the external port when responding ArbitraryDataFileListRequests
2022-03-05 13:00:17 +00:00
CalDescent
6697b3376b
Direct peer connections now use the on-demand data retrieved from file list requests, rather than the stale and incomplete ArbitraryPeerData.
2022-03-05 12:59:13 +00:00
CalDescent
ea785f79b8
Removed unnecessary synchronization
2022-03-04 19:02:30 +00:00
CalDescent
0352a09de7
New online accounts are now verified on the OnlineAccountsManager thread rather than on network threads. This is an attempt to reduce the amount of blocked network threads due to signature verification, and is necessary for the upcoming mempow addition.
2022-03-04 17:58:06 +00:00
CalDescent
5b4f15ab2e
Transaction importing code moved to TransactionImporter controller class
...
As with online accounts, no logic changes other than moving transaction queue processing from the controller thread to its own dedicated thread.
2022-03-04 16:47:21 +00:00
CalDescent
fd37c2b76b
Moved all online accounts code to a new OnlineAccountsManager controller class
...
There are no logic changes here other than moving performOnlineAccountsTasks() onto its own thread, so that it's not subject to anything that might be slowing down the main controller thread.
2022-03-04 16:24:04 +00:00
CalDescent
924aa05681
Optimized peer lists
...
- Removed synchronization from connectedPeers, and replaced it with an unmodifiableList.
- Added additional immuatable caches: handshakedPeers and outboundHandshakedPeers
This should greatly reduce the amount of time spent waiting around for access to the connectedPeers array, since it is now immediately accessible without needing to obtain a lock. It also removes calls to stream() which were consuming large amounts of CPU to constantly filter the connected peers down to a list of handshaked peers.
Thanks to @catbref for these great suggestions.
2022-03-04 15:14:12 +00:00
CalDescent
84b42210f1
Use ArbitraryDataFileRequestThreads only - instead of reusing file list response threads.
2022-03-04 13:34:16 +00:00
CalDescent
941080c395
Rework of arbitraryDataFileHashResponses to use a list rather than a map (limited to 1000) items. Sort the list by routes with the lowest number of peer hops first, to try and prioritize those which are easiest and quickest to reach.
2022-03-04 13:33:17 +00:00
CalDescent
35d9a10cf4
Avoid logging if there are no remaining transaction signatures to validate. There was too much log spam, none of which was particularly useful.
2022-03-04 12:03:58 +00:00
CalDescent
7c181379b4
Added more granularity to logging, to differentiate between signature validation and general processing/importing, as well as showing counts of the transactions being processed in each round.
2022-03-04 11:12:23 +00:00
CalDescent
f9576d8afb
Further optimizations to Controller.processIncomingTransactionsQueue()
...
- Signature validation is now able to run concurrently with synchronization, to reduce the chances of the queue building up, and to speed up the propagation of new transactions. There's no need to break out of the loop - or avoid looping in the first place - since signatures can be validated without holding the blockchain lock.
- A blockchain lock isn't even attempted if a sync request is pending.
2022-03-04 11:05:58 +00:00
CalDescent
6a8a113fa1
Merge pull request #74 from catbref/presence-txns-removal
...
PRESENCE transactions changed to always fail signature validation
2022-03-04 10:33:11 +00:00
CalDescent
ef59c34165
Added missing "break" which was causing additional unnecessary debug logging. Originally introduced due to a merge conflict with the metadata branch.
2022-03-04 10:28:44 +00:00
catbref
a9371f0a90
In Controller.processIncomingTransactionsQueue(), don't bother with 2nd-phase of locking blockchain and importing if there are no valid signature transactions to actually import
2022-03-03 20:32:27 +00:00
catbref
a7a94e49e8
PRESENCE transactions changed to always fail signature validation
2022-03-03 20:25:58 +00:00
catbref
affd100298
Reworking of Controller.processIncomingTransactionsQueue()
...
Main changes are:
* Check transaction signature validity in initial round, without blockchain lock
* Convert List of incoming transactions to Map so we can record whether we have validated transaction signature before to save rechecking effort
* Add invalid signature transactions to invalidUnconfirmedTransactions map with INVALID_TRANSACTION_RECHECK_INTERVAL expiry (~60min)
* Other minor changes related to List->Map change and Java object synchronization
2022-03-03 20:21:04 +00:00
CalDescent
69309c437e
Tightened up the content security policy for non HTML files.
2022-03-01 20:36:34 +00:00
CalDescent
e392e4d344
Allow eval(), setTimeout(), etc, to enable various QDN sites to function correctly. The existing sandboxing should be locking this down enough already. Limited to .html and .htm files only.
2022-03-01 20:35:56 +00:00
CalDescent
bd53856927
Disabled auto fetching of metadata. To be re-enabled at a later date.
2022-03-01 20:26:09 +00:00
CalDescent
cbd1018ecf
Allow identical data to be published if the metadata differs.
2022-03-01 20:22:47 +00:00
CalDescent
46606152eb
/arbitrary/metadata/* endpoint now returns ArbitraryResourceMetadata rather than a raw JSON string.
2022-03-01 20:22:20 +00:00
CalDescent
e6f93e0a08
Added categoryName to ArbitraryResourceMetadata, along with the existing category ID
2022-03-01 20:19:08 +00:00
CalDescent
8d81f1822f
Merge branch 'master' into qdn-metadata
...
# Conflicts:
# src/main/java/org/qortal/controller/Controller.java
# src/main/java/org/qortal/network/message/Message.java
2022-02-28 20:10:39 +00:00
catbref
590a8f52db
Remove future work comment from Controller
2022-02-27 16:57:26 +00:00
catbref
ecac47d1bc
Also notify TradePresenceWebsocket (using TradePresenceEvent) when bridging old PRESENCE txns
2022-02-27 16:56:17 +00:00
catbref
3b477ef637
Fix JAXB marshalling error (duplicate tradeAddress) in TradePresenceWebSocket. No need to send signature. Make sure publicKey is sent in Base58, not Base64.
2022-02-27 16:56:17 +00:00
catbref
e2ef5b2ef3
Missed change from last commit: incorrect logic in TradePresenceWebSocket
2022-02-27 16:56:17 +00:00
catbref
1d59feeb72
Created /websockets/crosschain/tradepresence to replace /websockets/presence
2022-02-27 16:55:30 +00:00
catbref
c53dd31765
Tidy up of trade presence timestamp generation & checking. Added tests. Renamed "online trades" to "trade presences"
2022-02-27 16:54:42 +00:00
catbref
4c02081992
Tidy up TradeBot presence logging. Decorate API endpoints /crosschain/tradeoffers and /crosschain/trade with presence expiry timestamps
2022-02-27 16:54:42 +00:00
catbref
cb57af3c53
Bugfixes to online trade sigs + bridging from PRESENCE transactions
2022-02-27 16:54:42 +00:00
catbref
01d810fc00
Initial effort at migrating PRESENCE transactions to dedicated network messages
2022-02-27 16:54:42 +00:00
CalDescent
8c2a9279ee
Return metadata in various /arbitrary APIs if the "includemetadata" parameter is included.
...
This is very inefficient and will soon be replaced with dedicated ArbitraryResources / ArbitraryMetadata tables. But this is acceptable in the short term, especially if limit and offset are used.
2022-02-27 09:09:18 +00:00
CalDescent
0d65448f3d
Request all metadata automatically.
2022-02-27 08:20:39 +00:00
CalDescent
9da2b3c11a
Don't respond to file list requests with just the metadata file.
...
We have the separate metadata protocol for this now.
2022-02-27 07:28:11 +00:00
CalDescent
95400da977
Fixed typo in various tests (copy and paste error)
2022-02-26 22:10:55 +00:00
CalDescent
dc41dc4c69
Tags now use an array of strings, rather than a single string.
2022-02-26 22:09:07 +00:00
CalDescent
a5c11d4c23
Reduced "Ignoring hash list request" logs from DEBUG to TRACE
2022-02-26 16:10:44 +00:00
CalDescent
878394535e
Improvements relating to fetching metadata
...
- Rate limiter is disabled when using the API
- fetchArbitraryMetadata() returns the actual metadata content rather than a boolean
- Exceptions are thrown on certain errors, rather than returning null
2022-02-26 16:10:26 +00:00
CalDescent
35dba27a55
Fixed issue due to not updating arbitraryMetadataRequests when receiving the metadata file.
2022-02-26 16:07:06 +00:00
CalDescent
f22ad13fa9
Merge branch 'master' into qdn-metadata
...
This involved a slight rewrite to remove the "includeMetadataOnly" boolean. Metadata is now always excluded, otherwise it complicates the caching too much.
# Conflicts:
# src/main/java/org/qortal/api/resource/ArbitraryResource.java
# src/main/java/org/qortal/controller/arbitrary/ArbitraryDataStorageManager.java
2022-02-26 14:39:20 +00:00
CalDescent
aa2e5cb87b
Merge branch 'hosted-resources-search'
2022-02-26 14:05:52 +00:00
CalDescent
7740f3da7e
Small formatting tweaks, for consistency with existing code.
2022-02-26 14:05:28 +00:00
CalDescent
badb576991
Fixed exception when identifier is null. Also handling null names as this may be a future scenario.
2022-02-26 14:04:35 +00:00
CalDescent
c65a63fc7e
Fixed "query" parameter error in swagger documentation
2022-02-26 13:59:53 +00:00
CalDescent
0111747016
Added debug logging of new file list stats.
2022-02-25 13:30:07 +00:00
CalDescent
eac4b0d87b
Maintain backwards support for pre-3.2.0 peers by only including new file list message params when sending to newer peers.
...
These params are optional and the process will function without them, just less efficiently.
2022-02-25 12:24:02 +00:00
CalDescent
3dadce4da4
Renamed a reference
2022-02-25 12:24:02 +00:00
CalDescent
1864468818
Prefer the route with the least number of hops when relaying.
2022-02-25 12:24:02 +00:00
CalDescent
1a59379162
Optionally include requestTime, requestHops, peerAddress, and isRelayPossible flag in ArbitraryDataFileListMessage
2022-02-25 12:24:02 +00:00
CalDescent
3cc394f02d
Merge pull request #70 from catbref/synchronizer-newchaintipevent
...
Modify TradeBot to trigger when chain tip changes instead of with every new block
2022-02-24 20:04:26 +00:00
CalDescent
53c4fe9e80
Fixed another ElectrumX issue found in unit tests.
...
Peers that were thought to be missing output address data may actually have just been using a different key - "address" instead of "addresses". Now reading the addresses from both keys, which may remove the need for the previously added checks.
2022-02-24 20:01:56 +00:00
CalDescent
d5521068b0
Fixed issue in earlier commit, found in unit tests.
2022-02-24 19:45:37 +00:00
CalDescent
a63ef4010d
Disabled expired transaction data deletion code for now, as this was often causing data to be incorrectly deleted.
...
This will need to be re-enabled at some point, but only after it's modified to be much less aggressive.
2022-02-24 19:05:29 +00:00
catbref
8950bb7af9
Very slightly relax validity checks for TRANSFER_PRIVS to allow for skeletal account records, e.g. due to CHAT transactions, but account last reference still needs to be null. Example at block height 736196 / 7
2022-02-24 09:13:51 +00:00
catbref
9e6fe7ceb9
Modify TradeBot, some related websockets, to trigger when chain tip changes instead of with every new block
2022-02-24 09:06:21 +00:00
CalDescent
c333d18cd0
Merge branch 'segwit'
2022-02-23 20:07:07 +00:00
CalDescent
0271ef69c9
When submitting a new transaction, treat the chain as "synced" if the latest block is less than 30 minutes old. Increased from around 7.5 minutes.
2022-02-23 20:06:55 +00:00
CalDescent
2d493a4ea2
Added logging when no addresses are returned for a bitcoiny transaction output.
2022-02-23 09:29:16 +00:00
CalDescent
e339ab856f
Skip over Electrum servers that don't return any output addresses. Hopeful fix for BTC transactions that report a zero value due to incomplete data being returned from certain ElectrumX peers.
2022-02-23 08:34:38 +00:00
proto
782904a971
improvement to the search on hosted resources
...
1) use the cached version instead of rescanning all the files
2) separating the loading (which include files scanning) and listing logic
2022-02-22 17:54:08 +01:00
proto
a3753c01bc
Add search functionality to hosted resources
2022-02-22 15:50:46 +01:00
CalDescent
d5c3921846
Only show the red "synchronizing" systray icon if the latest block isn't recent.
...
This should fix issue where the icon unnecessarily jumps between synced and synchronizing.
2022-02-21 22:34:13 +00:00
CalDescent
a2c462b3da
Add <meta charset="UTF-8"> tag to websites. Fixed issue rendering emojis and other special characters.
2022-02-21 22:28:59 +00:00
CalDescent
8673c7ef6e
Fixed bug in GET /peers/summary API
2022-02-21 22:28:18 +00:00
CalDescent
8d7be7757f
Fixed incorrectly named tag.
2022-02-21 22:27:44 +00:00
proto
6b83927048
Persist MintingAccounts.json on minting accounts add/remove
...
this fix the behavior of the node, After adding or removing a minting account, allowing it to persist it to the backup folder
2022-02-21 16:17:17 +01:00
proto
e07adbd60e
online accounts api call, fix level zero accounts
...
Added online zero level accounts to the response of /addresses/online/levels api endpoints
2022-02-21 15:40:10 +01:00
CalDescent
7798b8dcdc
Keep items in arbitraryDataFileHashResponses if they are currently being requested by another thread. This should help to locate the higher numbered chunks from larger resources.
2022-02-20 11:33:09 +00:00
CalDescent
146e7970bf
Synchronize this.allKnownPeers and this.connectedPeers in Network.requestDataFromPeer(), to make the method thread-safe.
...
This could be further improved by taking an immutable copy, but I'll leave this until the same approach is applied to other Network methods.
2022-02-20 11:04:33 +00:00
CalDescent
f4f7cc58e3
Removed unused import.
2022-02-20 10:44:59 +00:00
CalDescent
21b4b494e7
Renamed method.
2022-02-20 10:44:38 +00:00
CalDescent
7307844bee
If UPnP is disabled in settings, close the existing external listenPort if a UPnP rule exists.
2022-02-20 10:44:20 +00:00
CalDescent
5d419dd4ec
Handle case where funds are sent to and from the same bitcoiny deterministic wallet.
2022-02-19 17:45:24 +00:00
CalDescent
6d0db7cc5e
Catch UncheckedIOException in findAllHostedPaths() which was seen when a file was deleted by another thread.
2022-02-19 17:18:51 +00:00
CalDescent
8de606588c
Attempt to open the listen port (default 12392) using UPnP, if the local network supports it.
2022-02-18 20:11:00 +00:00
CalDescent
35b0a85818
Increased WALLET_KEY_LOOKAHEAD_INCREMENT_BITCOINJ to 50
2022-02-18 18:42:06 +00:00
CalDescent
fcdd85af6c
Try a lookahead size of 20 (instead of 3) when asking Bitcoinj for the balance.
2022-02-18 18:39:47 +00:00
CalDescent
5aac2dc9df
ONLINE_ACCOUNTS_V2_PEER_VERSION set to 3.2.0
2022-02-18 18:34:00 +00:00
CalDescent
becb0b37e6
Merge branch 'master' into network-online-accounts-v2
2022-02-18 17:12:44 +00:00
CalDescent
67ca876567
Log if we're unable to process the received file.
2022-02-18 15:35:37 +00:00
CalDescent
464ce66fd5
Moved deletion retry code into ArbitraryDataFile
2022-02-18 15:09:50 +00:00
CalDescent
3e505481fe
Default minPeerVersion also increased to 3.1.0
2022-02-18 14:50:46 +00:00
CalDescent
c90c3a183e
Block peers below 3.1.0
2022-02-18 14:50:29 +00:00
CalDescent
85b3278c8a
Don't throttle the arbitrary data file request threads when there are items to process.
2022-02-15 19:39:26 +00:00
CalDescent
c90c287601
Increased ARBITRARY_REQUEST_TIMEOUT from 10 to 12 seconds, as some were coming back around 9-10 seconds later.
2022-02-15 19:38:30 +00:00
CalDescent
6ee395ed12
Stop bulk arbitrary signature broadcasts, as they were creating a lot of network traffic, and are in the process of being replaced with a better method.
2022-02-15 19:10:20 +00:00
CalDescent
6275ac2b81
Increased numberOfAdditionalBatchesToSearch from 5 to 7.
...
This is the equivalent of increasing the max address gap from 15 to 21. The electrum standalone wallet uses 20, so this should be the most we will ever need.
2022-02-14 22:58:37 +00:00
CalDescent
fd0a6ec71f
Fix for invalid balance (and transaction amount) when there are no outputs relating to this wallet.
2022-02-14 22:53:30 +00:00
CalDescent
43791f00aa
Wait 2 minutes on node startup before trying to fetch followed QDN data.
2022-02-14 19:33:58 +00:00
CalDescent
538ac30b4e
Request only the missing hashes, not all of them.
2022-02-14 19:33:36 +00:00
CalDescent
acddf36467
Handle missing includeMetadata parameter.
2022-02-13 19:27:12 +00:00
CalDescent
166d32032a
Fixed message IDs.
2022-02-13 19:22:20 +00:00
CalDescent
e4238a62c9
Exclude metadata-only transactions in the data management page (but added an API parameter to allow them to optionally be included).
...
This ensures that the list will only show resources where there is at least 1 chunk.
2022-02-13 19:21:16 +00:00
CalDescent
ad9c466712
Fall back to UNCATEGORIZED if the parsed category doesn't match any available categories.
...
This allows for deletion of categories, as the resources will just move into UNCATEGORIZED until they are next updated.
2022-02-13 18:10:56 +00:00
CalDescent
a3d31bbaf1
Category updates based on feedback so far.
2022-02-13 17:56:47 +00:00
CalDescent
4821139501
Merge branch 'master' into qdn-metadata
...
# Conflicts:
# src/main/java/org/qortal/controller/arbitrary/ArbitraryDataFileListManager.java
2022-02-13 15:50:12 +00:00
CalDescent
83213800b9
Use the timestamp from the registerNameTransactionData in unit tests, rather than the current time.
2022-02-13 15:05:28 +00:00
CalDescent
265ae19591
Fixed other failing tests due to increased REGISTER_NAME transaction fee. At some point we should determine the correct fee inside of generateBase(), but setting it explicitly adds confidence in testing for now.
2022-02-13 14:31:21 +00:00