A decentralized bitcoin exchange network
Find a file
Steven Barclay 18a0c32708
Add subclass of ECKey which grinds for low-R signatures
Implement low-R nonce grinding with the class 'LowRSigningKey', which
always produces low-R signatures, consistent with the behaviour of
Bitcoin Core/Knots (post-2018), Sparrow, Coldcard and possibly other
wallets with recent updates, for hopefully improved privacy and slightly
lower and more predictable tx fees. Canonical DER-encoded signatures are
usually either 71 or 70 bytes (starting with hex 3045 or 3044 resp.),
with roughly 50-50 odds, depending on whether they are high-R or low-R.
(Less than 1% of the time, they will be shorter than 70 bytes, because
of the variable length bigint R & S encodings.) So trying different
nonces for low-R saves half-a-byte on average, at the cost of doubling
the average signing time.

To this end, provide the class 'CountingHMacDSAKCalculator' to supply a
custom nonce to 'o.b.c.s.ECDSASigner'. The first invocation of the
k-calculator instance matches the output of the RFC 6979 compliant
Bouncy Castle version, but subsequent invocations increment an internal
counter supplied as additional data/entropy to the HMAC, as mentioned in
section 3.6 of the RFC, until a low-R signature results. In this way, a
deterministic signing algorithm exactly matching that of (post-2018
versions of) Bitcoin Core results.

Also add unit tests, with test vectors taken from the RFC (which only
covers the NIST curves, unfortunately, not secp256k1), and test vectors
generated from signed txs created by the 'bitcoin-tx' command.
2024-09-04 14:14:23 +08:00
.github build(deps): bump gradle/gradle-build-action from 3.4.2 to 3.5.0 2024-07-22 14:41:36 +00:00
.idea Enforce Official Kotlin Codestyle 2023-09-10 18:30:06 +02:00
apitest Tidy logback files & add space back to log pattern 2024-05-02 01:56:32 +02:00
assets Move hamcrest dependency definition to bisq.java-conventions 2023-05-08 17:51:05 +10:00
btcnodemonitor Improve btc monitor 2024-07-05 16:11:25 +07:00
build-logic Bump version number for v1.9.17 2024-06-24 00:58:28 +00:00
cli Tidy logback files & add space back to log pattern 2024-05-02 01:56:32 +02:00
code-coverage-report Create standalone code coverage aggregation module 2023-07-06 17:52:54 +02:00
common Merge pull request #7196 from HenrikJannsen/Avoid-color-artefacts-at-antialias 2024-07-19 00:17:42 +00:00
core Add subclass of ECKey which grinds for low-R signatures 2024-09-04 14:14:23 +08:00
daemon Optimise/simplify some stream filtering for the REST API 2024-07-28 22:05:29 +02:00
desktop Merge pull request #7196 from HenrikJannsen/Avoid-color-artefacts-at-antialias 2024-07-19 00:17:42 +00:00
docs Extract 3 sections from the release notes as markdown pages. 2023-07-24 23:43:01 +02:00
gradle Add dependency to bitcoinj 2024-07-21 15:16:26 +07:00
inventory Remove emzy seednodes from inventory monitor 2024-07-01 10:20:14 +07:00
p2p Dont log bridges if empty 2024-07-05 16:11:14 +07:00
persistence persistence: Implement RollingBackups 2024-02-26 08:39:21 +01:00
platform Declare global protobuf-java in Java Platform Plugin 2023-07-06 18:18:59 +02:00
proto Add uid to Filter 2024-06-12 00:06:43 +00:00
regtest Create regtest-mempool docker-compose 2023-12-30 07:56:42 +01:00
restapi Optimise/simplify some stream filtering for the REST API 2024-07-28 22:05:29 +02:00
scripts seednode: Install openjdk-11-jdk from OS repository 2023-10-31 16:52:15 +01:00
seednode Merge pull request #7102 from runbtc/update-seednode-files 2024-07-19 00:08:01 +00:00
statsnode Move duplicated code to super class 2024-06-28 21:41:41 +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 Add restapi module (code from dao-node) 2024-06-07 22:53:32 +07: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 Add btxnodemonitor module 2024-06-10 20:29:57 +07: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.