Merge #319: joinmarket: 0.8.0-a5e8879 -> 0.8.1
42f7e9f874
joinmarket: 0.8.0-a5e8879 -> 0.8.1 (nixbitcoin) Pull request description: ACKs for top commit: erikarvstedt: ACK42f7e9f874
Tree-SHA512: 92dc19d0147a2a9fdcdaa20a78b7168e503149c1ca4bde084240628f6e09bf59f728232072eabdc8cd14146724e4b5bbf3ee2a668f27154a7169e7a9e53b94c4
This commit is contained in:
commit
14f81b403a
@ -363,12 +363,12 @@ See [here](https://github.com/JoinMarket-Org/joinmarket-clientserver/blob/master
|
|||||||
1. Enable yield generator bot in your node configuration
|
1. Enable yield generator bot in your node configuration
|
||||||
|
|
||||||
```
|
```
|
||||||
services.joinmarket.yieldgenerator.enable = true;
|
services.joinmarket.yieldgenerator = {
|
||||||
|
enable = true;
|
||||||
# Optional: Add custom parameters
|
# Optional: Add custom parameters
|
||||||
services.joinmarket.yieldgenerator.customParameters = ''
|
txfee = 200;
|
||||||
txfee = 200
|
cjfee_a = 300;
|
||||||
cjfee_a = 300
|
};
|
||||||
'';
|
'';
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -12,6 +12,7 @@ let
|
|||||||
inherit (config.services) bitcoind;
|
inherit (config.services) bitcoind;
|
||||||
torAddress = builtins.head (builtins.split ":" config.services.tor.client.socksListenAddress);
|
torAddress = builtins.head (builtins.split ":" config.services.tor.client.socksListenAddress);
|
||||||
# Based on https://github.com/JoinMarket-Org/joinmarket-clientserver/blob/master/jmclient/jmclient/configure.py
|
# Based on https://github.com/JoinMarket-Org/joinmarket-clientserver/blob/master/jmclient/jmclient/configure.py
|
||||||
|
yg = cfg.yieldgenerator;
|
||||||
configFile = builtins.toFile "config" ''
|
configFile = builtins.toFile "config" ''
|
||||||
[DAEMON]
|
[DAEMON]
|
||||||
no_daemon = 0
|
no_daemon = 0
|
||||||
@ -56,6 +57,7 @@ let
|
|||||||
merge_algorithm = default
|
merge_algorithm = default
|
||||||
tx_fees = 3
|
tx_fees = 3
|
||||||
absurd_fee_per_kb = 350000
|
absurd_fee_per_kb = 350000
|
||||||
|
max_sweep_fee_change = 0.8
|
||||||
tx_broadcast = self
|
tx_broadcast = self
|
||||||
minimum_makers = 4
|
minimum_makers = 4
|
||||||
max_sats_freeze_reuse = -1
|
max_sats_freeze_reuse = -1
|
||||||
@ -74,6 +76,17 @@ let
|
|||||||
onion_socks5_port = 9050
|
onion_socks5_port = 9050
|
||||||
tor_control_host = unix:/run/tor/control
|
tor_control_host = unix:/run/tor/control
|
||||||
hidden_service_ssl = false
|
hidden_service_ssl = false
|
||||||
|
|
||||||
|
[YIELDGENERATOR]
|
||||||
|
ordertype = ${yg.ordertype}
|
||||||
|
cjfee_a = ${toString yg.cjfee_a}
|
||||||
|
cjfee_r = ${toString yg.cjfee_r}
|
||||||
|
cjfee_factor = ${toString yg.cjfee_factor}
|
||||||
|
txfee = ${toString yg.txfee}
|
||||||
|
txfee_factor = ${toString yg.txfee_factor}
|
||||||
|
minsize = ${toString yg.minsize}
|
||||||
|
size_factor = ${toString yg.size_factor}
|
||||||
|
gaplimit = 6
|
||||||
'';
|
'';
|
||||||
|
|
||||||
# The jm scripts create a 'logs' dir in the working dir,
|
# The jm scripts create a 'logs' dir in the working dir,
|
||||||
@ -93,21 +106,6 @@ let
|
|||||||
in {
|
in {
|
||||||
options.services.joinmarket = {
|
options.services.joinmarket = {
|
||||||
enable = mkEnableOption "JoinMarket";
|
enable = mkEnableOption "JoinMarket";
|
||||||
yieldgenerator = {
|
|
||||||
enable = mkEnableOption "yield generator bot";
|
|
||||||
customParameters = mkOption {
|
|
||||||
type = types.str;
|
|
||||||
default = "";
|
|
||||||
example = ''
|
|
||||||
txfee = 200
|
|
||||||
cjfee_a = 300
|
|
||||||
'';
|
|
||||||
description = ''
|
|
||||||
Python code to define custom yield generator parameters, as described in
|
|
||||||
https://github.com/JoinMarket-Org/joinmarket-clientserver/blob/master/docs/YIELDGENERATOR.md
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
dataDir = mkOption {
|
dataDir = mkOption {
|
||||||
type = types.path;
|
type = types.path;
|
||||||
default = "/var/lib/joinmarket";
|
default = "/var/lib/joinmarket";
|
||||||
@ -139,6 +137,66 @@ in {
|
|||||||
default = true;
|
default = true;
|
||||||
};
|
};
|
||||||
inherit (nbLib) cliExec;
|
inherit (nbLib) cliExec;
|
||||||
|
|
||||||
|
yieldgenerator = {
|
||||||
|
enable = mkEnableOption "yield generator bot";
|
||||||
|
ordertype = mkOption {
|
||||||
|
type = types.enum [ "reloffer" "absoffer" ];
|
||||||
|
default = "reloffer";
|
||||||
|
description = ''
|
||||||
|
Which fee type to actually use
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
cjfee_a = mkOption {
|
||||||
|
type = types.ints.unsigned;
|
||||||
|
default = 500;
|
||||||
|
description = ''
|
||||||
|
Absolute offer fee you wish to receive for coinjoins (cj) in Satoshis
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
cjfee_r = mkOption {
|
||||||
|
type = types.float;
|
||||||
|
default = 0.00002;
|
||||||
|
description = ''
|
||||||
|
Relative offer fee you wish to receive based on a cj's amount
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
cjfee_factor = mkOption {
|
||||||
|
type = types.float;
|
||||||
|
default = 0.1;
|
||||||
|
description = ''
|
||||||
|
Variance around the average cj fee
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
txfee = mkOption {
|
||||||
|
type = types.ints.unsigned;
|
||||||
|
default = 100;
|
||||||
|
description = ''
|
||||||
|
The average transaction fee you're adding to coinjoin transactions
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
txfee_factor = mkOption {
|
||||||
|
type = types.float;
|
||||||
|
default = 0.3;
|
||||||
|
description = ''
|
||||||
|
Variance around the average tx fee
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
minsize = mkOption {
|
||||||
|
type = types.ints.unsigned;
|
||||||
|
default = 100000;
|
||||||
|
description = ''
|
||||||
|
Minimum size of your cj offer in Satoshis. Lower cj amounts will be disregarded.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
size_factor = mkOption {
|
||||||
|
type = types.float;
|
||||||
|
default = 0.1;
|
||||||
|
description = ''
|
||||||
|
Variance around all offer sizes
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable (mkMerge [{
|
config = mkIf cfg.enable (mkMerge [{
|
||||||
@ -219,25 +277,13 @@ in {
|
|||||||
}
|
}
|
||||||
|
|
||||||
(mkIf cfg.yieldgenerator.enable {
|
(mkIf cfg.yieldgenerator.enable {
|
||||||
systemd.services.joinmarket-yieldgenerator = let
|
systemd.services.joinmarket-yieldgenerator = {
|
||||||
ygDefault = "${nbPkgs.joinmarket}/bin/jm-yg-privacyenhanced";
|
|
||||||
ygBinary = if cfg.yieldgenerator.customParameters == "" then
|
|
||||||
ygDefault
|
|
||||||
else
|
|
||||||
pkgs.runCommand "jm-yieldgenerator-custom" {
|
|
||||||
inherit (cfg.yieldgenerator) customParameters;
|
|
||||||
} ''
|
|
||||||
substitute ${ygDefault} $out \
|
|
||||||
--replace "# end of settings customization" "$customParameters"
|
|
||||||
chmod +x $out
|
|
||||||
'';
|
|
||||||
in {
|
|
||||||
wantedBy = [ "joinmarket.service" ];
|
wantedBy = [ "joinmarket.service" ];
|
||||||
requires = [ "joinmarket.service" ];
|
requires = [ "joinmarket.service" ];
|
||||||
after = [ "joinmarket.service" ];
|
after = [ "joinmarket.service" ];
|
||||||
preStart = let
|
preStart = let
|
||||||
start = ''
|
start = ''
|
||||||
exec ${ygBinary} --datadir='${cfg.dataDir}' --wallet-password-stdin wallet.jmdat
|
exec ${nbPkgs.joinmarket}/bin/jm-yg-privacyenhanced --datadir='${cfg.dataDir}' --wallet-password-stdin wallet.jmdat
|
||||||
'';
|
'';
|
||||||
in ''
|
in ''
|
||||||
pw=$(cat "${secretsDir}"/jm-wallet-password)
|
pw=$(cat "${secretsDir}"/jm-wallet-password)
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
{ stdenv, lib, fetchurl, python3, nbPython3Packages, pkgs }:
|
{ stdenv, lib, fetchurl, python3, nbPython3Packages, pkgs }:
|
||||||
|
|
||||||
let
|
let
|
||||||
version = "0.8.0-a5e8879";
|
version = "0.8.1";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://github.com/JoinMarket-Org/joinmarket-clientserver/archive/a5e8879d119c8702476da32957d2cfecc3584c89.tar.gz";
|
url = "https://github.com/JoinMarket-Org/joinmarket-clientserver/archive/v${version}.tar.gz";
|
||||||
sha256 = "1l98mjk5rc5kji4yads6iicvyps0blsddwzclsiv0ha1az6dzpci";
|
sha256 = "1q3x1x0a78v6apwvbyhl7yh4dgr7xpikd8j07gi3by004ns3789d";
|
||||||
};
|
};
|
||||||
|
|
||||||
runtimePackages = with nbPython3Packages; [
|
runtimePackages = with nbPython3Packages; [
|
||||||
|
@ -9,19 +9,17 @@ cd $TMPDIR
|
|||||||
echo "Fetching latest release"
|
echo "Fetching latest release"
|
||||||
git clone https://github.com/joinmarket-org/joinmarket-clientserver 2> /dev/null
|
git clone https://github.com/joinmarket-org/joinmarket-clientserver 2> /dev/null
|
||||||
cd joinmarket-clientserver
|
cd joinmarket-clientserver
|
||||||
latest=a5e8879d119c8702476da32957d2cfecc3584c89
|
latest=$(git describe --tags `git rev-list --tags --max-count=1`)
|
||||||
echo "Latest release is ${latest}"
|
echo "Latest release is ${latest}"
|
||||||
|
|
||||||
# GPG verification
|
# GPG verification
|
||||||
export GNUPGHOME=$TMPDIR
|
export GNUPGHOME=$TMPDIR
|
||||||
echo "Fetching Adam Gibson's key"
|
echo "Fetching Adam Gibson's key"
|
||||||
gpg --keyserver hkps://keyserver.ubuntu.com --recv-keys 2B6FC204D9BF332D062B461A141001A1AF77F20B 2> /dev/null
|
gpg --keyserver hkps://keyserver.ubuntu.com --recv-keys 2B6FC204D9BF332D062B461A141001A1AF77F20B 2> /dev/null
|
||||||
echo "Fetching Kristaps Kaupe's key"
|
|
||||||
gpg --keyserver hkps://keyserver.ubuntu.com --recv-keys BF60DF964F88DD88174089A2D47B1B4232B55437 2> /dev/null
|
|
||||||
echo "Verifying latest release"
|
echo "Verifying latest release"
|
||||||
git verify-commit ${latest}
|
git verify-tag ${latest}
|
||||||
|
|
||||||
echo "commit: ${latest}"
|
echo "tag: ${latest}"
|
||||||
# The prefix option is necessary because GitHub prefixes the archive contents in this format
|
# The prefix option is necessary because GitHub prefixes the archive contents in this format
|
||||||
echo "sha256: $(nix-hash --type sha256 --flat --base32 \
|
echo "sha256: $(nix-hash --type sha256 --flat --base32 \
|
||||||
<(git archive --format tar.gz --prefix=joinmarket-clientserver-"${latest//v}"/ ${latest}))"
|
<(git archive --format tar.gz --prefix=joinmarket-clientserver-"${latest//v}"/ ${latest}))"
|
||||||
|
@ -65,10 +65,11 @@ let testEnv = rec {
|
|||||||
tests.joinmarket-ob-watcher = cfg.joinmarket-ob-watcher.enable;
|
tests.joinmarket-ob-watcher = cfg.joinmarket-ob-watcher.enable;
|
||||||
services.joinmarket.yieldgenerator = {
|
services.joinmarket.yieldgenerator = {
|
||||||
enable = config.services.joinmarket.enable;
|
enable = config.services.joinmarket.enable;
|
||||||
customParameters = ''
|
# Test a smattering of custom parameters
|
||||||
txfee = 200
|
ordertype = "absoffer";
|
||||||
cjfee_a = 300
|
cjfee_a = 300;
|
||||||
'';
|
cjfee_r = 0.00003;
|
||||||
|
txfee = 200;
|
||||||
};
|
};
|
||||||
|
|
||||||
tests.nodeinfo = config.nix-bitcoin.nodeinfo.enable;
|
tests.nodeinfo = config.nix-bitcoin.nodeinfo.enable;
|
||||||
|
Loading…
Reference in New Issue
Block a user