A decentralized bitcoin exchange network
Go to file
Steven Barclay 3a97953152
Fix cubic time bug in BondedRolesRepository.update()
Alleviate a cubic time bug during the update of the bonded roles
repository, reducing it to quadratic running time. On Mainnet, this
gives a roughly ten-fold speedup and should allow better scaling in the
event that many new bonded roles are added.

Replace calls to 'BondedRolesRepository.findBondedAssetByHash' with a
lookup into a lazily initialised map of bonded assets (Roles) by hash
(reset at the start of each call to 'BondRepository.update()' to prevent
stale caching). This avoids rescanning the roles list for every pair of
roles and lockup tx outputs, thus reducing the number of steps (to
highest order) from:

  #roles * #roles * #lockup-tx-outputs

to:

  #roles * #lockup-tx-outputs

(The logs show 2 or 3 calls to 'BondedRepository.update()' every time a
new block arrives, and while this was only taking around a second or so
on Mainnet, it could potentially grow to something problematic with
cubic scaling in the number of bonded roles.)
2024-04-19 23:49:48 +02:00
.github build(deps): bump gradle/gradle-build-action from 3.0.0 to 3.1.0 2024-02-19 14:02:34 +00:00
.idea Enforce Official Kotlin Codestyle 2023-09-10 18:30:06 +02:00
apitest DevEnv: Make DEV_PRIVILEGE_PRIV_KEY private and add getter 2023-12-28 08:50:13 +01:00
assets Move hamcrest dependency definition to bisq.java-conventions 2023-05-08 17:51:05 +10:00
build-logic Add JUnit MockitoExtension library 2023-12-28 08:50:13 +01:00
cli Expose isDaoStateReadyAndInSync status to API clients. 2024-02-09 13:30:28 -06:00
code-coverage-report Create standalone code coverage aggregation module 2023-07-06 17:52:54 +02:00
common DevEnv: Add static getDevPrivilegePubKeys() method 2023-12-28 08:50:13 +01:00
core Fix cubic time bug in BondedRolesRepository.update() 2024-04-19 23:49:48 +02:00
daemon Expose isDaoStateReadyAndInSync status to API clients. 2024-02-09 13:30:28 -06:00
desktop Generify remaining raw types used by the DAO packages 2024-03-09 01:26:36 +08:00
docs Extract 3 sections from the release notes as markdown pages. 2023-07-24 23:43:01 +02:00
gradle Add JUnit MockitoExtension library 2023-12-28 08:50:13 +01:00
p2p Replace MockitoSession with the Mockito test extension 2024-02-03 02:36:31 +08:00
persistence Implement AtomicFileWriterIntegrationTests 2024-02-15 14:41:53 +01:00
platform Declare global protobuf-java in Java Platform Plugin 2023-07-06 18:18:59 +02:00
proto Merge pull request #7023 from jmacxx/fix_issue_7022 2024-02-25 14:31:39 +00:00
regtest Create regtest-mempool docker-compose 2023-12-30 07:56:42 +01:00
scripts seednode: Install openjdk-11-jdk from OS repository 2023-10-31 16:52:15 +01:00
seednode seednode: Update BISQ_ENTRYPOINT 2023-12-15 09:44:15 +01:00
statsnode Use onDataReceived instead of onUpdatedDataReceived for considering p2p network state as initialized 2023-11-19 14:47:52 +07:00
.editorconfig Do not strip trailing whitespace in Git diffs 2020-01-10 19:48:26 +01:00
.gitattributes Not use git lfs anymore 2022-09-15 09:21:37 +02:00
.gitignore .gitignore: Exclude regtest data directories 2023-12-30 07:57:00 +01:00
.travis.yml Not use git lfs anymore 2022-09-15 09:21:37 +02:00
Bisq1_icon.svg Add project icon (can be used in Intellij for the project) 2023-12-10 11:23:19 +07:00
build.gradle Implement startBitcoindRegtest Gradle Task 2023-09-11 16:55:11 +02:00
CODEOWNERS Remove @cbeams as build and pricenode code owner 2020-06-28 11:23:36 +02:00
CONTRIBUTING.md Remove references to keybase and switch to Matrix 2022-02-02 16:57:06 +01:00
gradle.properties Enforce Gradle Dependency Verification 2022-12-06 21:21:39 +02:00
gradlew Update to Gradle 7.6.3 2023-10-17 00:25:21 +02:00
gradlew.bat Update to Gradle 7.6.3 2023-10-17 00:25:21 +02:00
LICENSE add basic wallet, update nav buttons, move unused img 2014-04-24 16:55:55 +02:00
Makefile Revert Makefile to e5aef09 2023-12-14 16:23:39 +01:00
pull_request_template.md Added a Pull Request template 2019-11-27 13:46:54 +01:00
README.md Replace Travis build icon with the Github Actions svg 2022-04-12 17:57:12 +02:00
settings.gradle Create persistence module 2024-01-31 14:50:12 +01:00

Actions Status

What is Bisq?

Bisq is a safe, private and decentralized way to exchange bitcoin for national currencies and other digital assets. Bisq uses peer-to-peer networking and multi-signature escrow to facilitate trading without a third party. Bisq is non-custodial and incorporates a human arbitration system to resolve disputes.

To learn more, see the doc and video at https://bisq.network/intro.

Get started using Bisq

Follow the step-by-step instructions at https://bisq.network/get-started.

Contribute to Bisq

See CONTRIBUTING.md and the developer docs.