A decentralized bitcoin exchange network
Find a file
Steven Barclay 4c0c11bb27
Implement BM capping algorithm change (with delayed activation)
Change the algorithm used to adjust & cap the burn share of each BM
candidate to use an unlimited number of 'rounds', as described in:

  https://github.com/bisq-network/proposals/issues/412

That is, instead of capping the shares once, then distributing the
excess to the remaining BM, then capping again and giving any excess to
the Legacy Burning Man, we cap-redistribute-cap-redistribute-... an
unlimited number of times until no more candidates are capped. This has
the effect of reducing the LBM's share and increasing everyone else's,
alleviating the security risk of giving too much to the LBM (who is
necessarily uncapped).

Instead of implementing the new algorithm directly, we simply enlarge
the set of candidates who should be capped to include those who would
eventually be capped by the new algorithm, in order to determine how
much excess burn share should go to the remaining BM. Then we apply the
original method, 'candidate.calculateCappedAndAdjustedShares(..)', to
set each share to be equal to its respective cap or uniformly scaled
upwards from the starting amount accordingly.

To this end, the static method 'BurningManService.imposeCaps' is added,
which determines which candidates will eventually be capped, by sorting
them in descending order of burn-share/cap-share ratio, then marking all
the candidates in some suitable prefix of the list as capped, iterating
through them one-by-one & gradually increasing the virtual capping round
(starting at zero) until the end of the prefix is reached. (The method
also determines what the uncapped adjusted burn share of each BM should
be, but that only affects the BM view & burn targets.) In this way, the
new algorithm runs in guaranteed O(n * log n) time.

To prevent failed trades, the new algorithm is set to activate at time
'DelayedPayoutTxReceiverService.PROPOSAL_412_ACTIVATION_DATE', with a
placeholder value of 12am, 1st January 2024 (UTC). This simply toggles
whether the for-loop in 'imposeCaps' should stop after capping round 0,
since doing so will lead to identical behaviour to the original code
(even accounting for FP rounding errors).
2023-11-26 21:54:20 +08:00
.github build(deps): bump actions/checkout from 4.1.0 to 4.1.1 2023-10-23 14:13:52 +00:00
.idea Enforce Official Kotlin Codestyle 2023-09-10 18:30:06 +02:00
apitest Apply AppStartPlugin to all desktop applications 2023-09-10 22:10:09 +02:00
assets Move hamcrest dependency definition to bisq.java-conventions 2023-05-08 17:51:05 +10:00
build-logic Merge pull request #6943 from alvasw/remove_azul_enforcement 2023-11-15 21:42:06 +00:00
cli Apply AppStartPlugin to all desktop applications 2023-09-10 22:10:09 +02:00
code-coverage-report Create standalone code coverage aggregation module 2023-07-06 17:52:54 +02:00
common Merge branch 'master' into release/v1.9.14 2023-10-16 19:47:43 +00:00
core Implement BM capping algorithm change (with delayed activation) 2023-11-26 21:54:20 +08:00
daemon Adapt fee service client calls to simplified interface. 2023-10-25 17:07:03 -05:00
desktop Merge pull request #6931 from jmacxx/refactor_fee_service 2023-11-15 21:41:41 +00:00
docs Extract 3 sections from the release notes as markdown pages. 2023-07-24 23:43:01 +02:00
gradle Update to Gradle 7.6.3 2023-10-17 00:25:21 +02:00
p2p Merge branch 'master' into release/v1.9.14 2023-10-16 19:47:43 +00:00
platform Declare global protobuf-java in Java Platform Plugin 2023-07-06 18:18:59 +02:00
proto Add sellerConfirmedPaymentReceiptDate to Trade 2023-10-09 20:37:35 +02:00
scripts seednode: Install openjdk-11-jdk from OS repository 2023-10-31 16:52:15 +01:00
seednode seednode: Run script from seednode module 2023-11-03 18:49:31 +01:00
statsnode Apply AppStartPlugin to all desktop applications 2023-09-10 22:10:09 +02: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 Enforce same JDK in all start scripts 2023-09-10 22:11:37 +02:00
.travis.yml Not use git lfs anymore 2022-09-15 09:21:37 +02:00
bisq-apitest Enforce same JDK in all start scripts 2023-09-10 22:11:37 +02:00
bisq-cli Enforce same JDK in all start scripts 2023-09-10 22:11:37 +02:00
bisq-daemon Enforce same JDK in all start scripts 2023-09-10 22:11:37 +02:00
bisq-desktop Enforce same JDK in all start scripts 2023-09-10 22:11:37 +02:00
bisq-seednode Enforce same JDK in all start scripts 2023-09-10 22:11:37 +02:00
bisq-statsnode Enforce same JDK in all start scripts 2023-09-10 22:11:37 +02: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 Makefile: Don't spam console with all nodes' logs 2023-09-12 16:20:54 +02: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 Implement custom toolchain resolver 2023-09-12 20:33:31 +02: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.