Giter VIP home page Giter VIP logo

joininbox's People

Contributors

cornpharmer avatar gordianln avatar m00ninite avatar nyxnor avatar openoms avatar stopfeds avatar tehelsper avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

joininbox's Issues

[Feature request]] Signing messages

New item in the tools menu:
Sign a message with an external address of a specified mixdepth.

Input: Wallet, Mixdepth, Textmessage
Output: Signature, Address

[Research] safe autounlock for the Yield Generator

Currently considered highly unsecure since cannot protect from physical theft.
The unencrypted password can be extracted from storage if stored in plaintext leading to risking all the funds.

Can consider an optional YG autounlock with only the encrypted password stored on disk if the boot process would have some kind of authentication.
Ideas:

  • attached (and/or unlocked) U2F device like YubiKey or HWW
  • PIN on touchscreen (many dependencies)

Encryption should use a salt unique to the build (maybe using uname- a, but look for better options)

Alternative: the JoinMarket wallet could have a second password which would not allow spending only signing as a Maker.

error -18: wallet requested is not loaded

in some cases after the initial setup

both through RPC and bitcoin-cli

$ bitcoin-cli listwallets
[
]

And still displaying:

$ bitcoin-cli loadwallet wallet.dat
error code: -4
error message:
Wallet file verification failed. Refusing to load database. Data file '/home/bitcoin/.bitcoin/wallet.dat/wallet.dat' is already loaded.

The cause is unclear to me so far, but restarting bitcoind solves it:

sudo systemctl restart bictoind
or if running on signet:
sudo systemctl restart signetd

entering:
menu
afterwards will load the bitcoind wallet.

# Error: wallet.jmdat file not found

Using the joininbox v0.4.0 menu on raspiblitz after jm shortcut, options that should open the wallet.jmdat file show "# Error: wallet.jmdat file not found".

Adding SSH 2fa using Google Authenticator breaks the ability to SSH -X into Joinmarket-Qt

I recently added Google Authenticator as an SSH 2fa means. It works great for SSH-ing in as "admin" but since doing so, I am not able to launch the Joinmarket-Qt GUI using the advised "ssh -X ....." command given in the Joininbox menu.

Steps to replicate:

  1. install libpam-google-authenticator
  2. do: google-authenticator
  3. answer the resulting questions (the given defaults are fine)
  4. Add this line to the bottom of your /etc/pam.d/sshd file:
    auth required pam_google_authenticator.so
  5. Go to your /etc/ssh/sshd_config file and find the line that says: ChallengeresponseAuthentication no
    and change the no to yes.
  6. Restart sshd.
  7. Test basic ssh and then try to launch Joinmarket-Qt.

update to rpc auth

this style will be deprecated eventually
image

instead use
wget https://raw.githubusercontent.com/bitcoin/bitcoin/master/share/rpcauth/rpcauth.py
python ./rpcauth.py bitcoinrpc

unzip: command not found when using the PRUNED option

# The PGP signature and the hash of the downloaded snapshot is correct
# Exract and copy to /home/store/app-data/.bitcoin
# The folder /home/store/app-data is present already
sudo: unzip: command not found

Bitcoin Core starts to download the blockchain from the start as the snapshot is not extracted.

Solution:
run:
sudo apt install unzip
and choose the PRUNED option gain from the CONFIG menu.

joinmarket user not accepting PASSWORD_B

when trying to connect to the QTGUI from Windows, I have configured a new Putty session and enabled X11 forwarding and the autologin as user: joinmarket. However, this session does not accept PASSWORD_B or any other password I have configured.

Also can you advise if I need to add any other details on the X11 setting page, such as X display location?

Exiting menu requires multiple tries (probably script run from subenu adds +1)

Steps to reproduce:

  1. On RaspiBlitz, do jm
  2. In menu select [Send]
  3. Select <Cancel>
  4. Exit menu using <Exit>
  5. It will return me to the script asking me to use ENTER to go back to menu
  6. When trying exiting again, it works

Exiting without visiting [Send] sub-script works on the first try.


When I use menu for longer time, it required more tries to exit menu.

Create a STARTUP menu on forst run instead of showing CONFIG

  • CONNECT "Connect to a remote bitcoin node on mainnet"
  • SIGNET "Switch to signet with a local Bitcoin Core"
  • PRUNED "Start a pruned node locally from prunednode.today"

if a local bitcoin directory is present:

  • LOCAL "Connect to the local Bitcoin Core on $network"

  • JMCONF "Edit the joinmarket.cfg manually"

  • UPDATE "Update JoininBox or JoinMarket"

Systemd error: Current command vanished from the unit file, execution of the command list won't be resumed.

Systemd fails with:

systemd[1]: yg-privacyenhanced.service: Current command vanished from the unit file, execution of the command list won't be resumed.

when running YG on:
Odroid HC1 with Armbian, kernel: 5.4.28-odroidxu4
RPi4 4GB Linux raspberrypi 4.19.118-v7l+
On both nodes: the wallet is specified in joinmarket.cfg and multiwallet is on in bitcoin.conf
Bitcoin Core: v0.20.0

RPi4 4GB Linux raspberrypi 4.19.118-v7l+ -> downgraded to Bitcoin Core v0.19.1 - to no effect

Odroid HC1 with Armbian, kernel: 5.4.28-odroidxu4 - deleted wallet value in joinmarket.cfg - testing

No other python process running with pgrep python.

Status

$ sudo systemctl status yg-privacyenhanced.service 
● yg-privacyenhanced.service - yg-privacyenhanced
   Loaded: loaded (/etc/systemd/system/yg-privacyenhanced.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2020-06-17 21:40:59 BST; 11min ago
 Main PID: 11294 (sh)
    Tasks: 4 (limit: 4455)
   Memory: 30.8M
   CGroup: /system.slice/yg-privacyenhanced.service
           ├─11294 /bin/sh -c . /home/joinmarket/joinmarket-clientserver/jmvenv/bin/activate && cat /home/joinmarket/.pw |  python yg-privacyenhanced.py /home/joinmarket/.joinmarket/wallets/jm1.jmdat --wallet-pa
           └─11298 python yg-privacyenhanced.py /home/joinmarket/.joinmarket/wallets/jm1.jmdat --wallet-password-stdin

Systemd setting:

$ cat /etc/systemd/system/yg-privacyenhanced.service

[Unit]
Description=yg-privacyenhanced

[Service]
WorkingDirectory=/home/joinmarket/joinmarket-clientserver/scripts/
ExecStart=/bin/sh -c '. /home/joinmarket/joinmarket-clientserver/jmvenv/bin/activate && cat /home/joinmarket/.pw |  python yg-privacyenhanced.py /home/joinmarket/.joinmarket/wallets/jm1.jmdat --wallet-password-stdin'
User=joinmarket
Group=joinmarket
Type=simple
KillMode=process
TimeoutSec=infinity
Restart=no

[Install]
WantedBy=multi-user.target

Add menu options

  • connect to local node (raspiblitz or pruned)

  • sign externally constructed txn (specter)

  • install - remove specter

  • signet

Add an option to start a pruned node on the SDcard

~4.3 Gb to be downloaded from https://prunednode.today/ to bootstrap.


wget https://prunednode.today/snapshot210211.zip

wget https://prunednode.today/snapshot210211.signed.txt
curl https://stepansnigirev.com/ss-specter-release.asc | gpg --import
gpg --verify snapshot210211.signed.txt
sha256sum -c snapshot210211.signed.txt

UX freature: Add warning about inconfirmed UTXOs when doing CJ Send

When doing Send, swiping whole mixdepth, the unconfirmed outputs are omitted without warning.

It may be good to have some kind of warning that warn the user that no whole mixdepth will be used because unconfirmed UTXOs.

Also, it may be useful to see which UTXOs are unconfirmed in the overview of all mixdepths (INFO -> ALL)

joinmarket.cfg default settings

  • set logging level to DEBUG by default monitor DEBUG level outputs through the latest logfile
    The biggest difference from INFO is that it exposes the IRC communication. Might be still too noisy for the typical usecase.

  • specify wallet file to be used to avoid sharing the same bitcoind wallet with other apps.
    To specify a new wallet need to use multiwallet in Bitcoin Core: https://bitcoincore.org/en/releases/0.15.0/
    Needs editing the bitcoin.conf to include multiple wallet= entries and restart.
    Will need to rescan with after opening every previously created joinmarket wallet when starting with a new .dat file in Core.
    bitcoin-cli -rpcwallet=jmwallet.dat rescanblockchain
    this takes a long time and maybe unnecessary until there is no other application using the default wallet.dat.
    Can still specify the wallet.dat in joinmarket.cfg for clarity.

Bitcoin Core Signing key inaccessible on https://bitcoin.org/laanwj-releases.asc

Occasionally the Bitcoin Core installation or switching to signet fails due to https://bitcoin.org/laanwj-releases.asc is not accessible called in

sudo -u joinmarket wget https://bitcoin.org/laanwj-releases.asc

https://bitcoinhackers.org/web/statuses/106566964467746325
https://twitter.com/openoms/status/1414518505400111104

Fix:
set a fallback to: https://raw.githubusercontent.com/bitcoin-dot-org/Bitcoin.org/master/laanwj-releases.asc

change label

image

Cancel should say disconnect, and go back to host instead of the shell. The last item on the menu takes you to the shell.

image

For the children it could say Back instead of Cancel

QT GUI and Xming on windows

I have configured a putty session as per the instructions however I get the following error when running the command # qtgui.

opening the JoinMarket-QT GUI with the command: '(jmvenv) python joinmarket-qt.py'

qt.qpa.screen: QXcbConnection: Could not connect to display
Could not connect to any X display.

Xming is running. In putty after enabling x11 forwarding, there is a field for X Display location. Am i meant to have an address here? If so what?

Implement PayJoin changes

Currently there is an error accessing the auth_cookie on receiving a payjoin:

ERROR]  Setup failed: [Failure instance: Traceback: <class 'RuntimeError'>: Failed to connect to: <twisted.internet.endpoints.UNIXClientEndpoint object at 0xb4d4f5b0>: An error occurred while connecting: 13: Permission denied., <twisted.internet.endpoints.TCP4ClientEndpoint object at 0xb4d4f590>: Failed to read COOKIEFILE '/mnt/hdd/tor/sys/control_auth_cookie': [Errno 13] Permission denied: '/mnt/hdd/tor/sys/control_auth_cookie'
, <twisted.internet.endpoints.TCP4ClientEndpoint object at 0xb4d4f610>: Connection was refused by other side: 111: Connection refused.
/home/joinmarket/joinmarket-clientserver/jmvenv/lib/python3.7/site-packages/twisted/internet/defer.py:501:errback
/home/joinmarket/joinmarket-clientserver/jmvenv/lib/python3.7/site-packages/twisted/internet/defer.py:568:_startRunCallbacks
/home/joinmarket/joinmarket-clientserver/jmvenv/lib/python3.7/site-packages/twisted/internet/defer.py:654:_runCallbacks
/home/joinmarket/joinmarket-clientserver/jmvenv/lib/python3.7/site-packages/twisted/internet/defer.py:1475:gotResult
--- <exception caught here> ---
/home/joinmarket/joinmarket-clientserver/jmvenv/lib/python3.7/site-packages/twisted/internet/defer.py:1416:_inlineCallbacks
/home/joinmarket/joinmarket-clientserver/jmvenv/lib/python3.7/site-packages/twisted/python/failure.py:512:throwExceptionIntoGenerator
/home/joinmarket/joinmarket-clientserver/jmvenv/lib/python3.7/site-packages/txtorcon/controller.py:466:connect
]
Setup failed: [Failure instance: Traceback: <class 'RuntimeError'>: Failed to connect to: <twisted.internet.endpoints.UNIXClientEndpoint object at 0xb4d4f5b0>: An error occurred while connecting: 13: Permission denied., <twisted.internet.endpoints.TCP4ClientEndpoint object at 0xb4d4f590>: Failed to read COOKIEFILE '/mnt/hdd/tor/sys/control_auth_cookie': [Errno 13] Permission denied: '/mnt/hdd/tor/sys/control_auth_cookie'
, <twisted.internet.endpoints.TCP4ClientEndpoint object at 0xb4d4f610>: Connection was refused by other side: 111: Connection refused.
/home/joinmarket/joinmarket-clientserver/jmvenv/lib/python3.7/site-packages/twisted/internet/defer.py:501:errback
/home/joinmarket/joinmarket-clientserver/jmvenv/lib/python3.7/site-packages/twisted/internet/defer.py:568:_startRunCallbacks
/home/joinmarket/joinmarket-clientserver/jmvenv/lib/python3.7/site-packages/twisted/internet/defer.py:654:_runCallbacks
/home/joinmarket/joinmarket-clientserver/jmvenv/lib/python3.7/site-packages/twisted/internet/defer.py:1475:gotResult
--- <exception caught here> ---
/home/joinmarket/joinmarket-clientserver/jmvenv/lib/python3.7/site-packages/twisted/internet/defer.py:1416:_inlineCallbacks
/home/joinmarket/joinmarket-clientserver/jmvenv/lib/python3.7/site-packages/twisted/python/failure.py:512:throwExceptionIntoGenerator
/home/joinmarket/joinmarket-clientserver/jmvenv/lib/python3.7/site-packages/txtorcon/controller.py:466:connect
]
done
Unhandled error in Deferred:

Traceback (most recent call last):
  File "/home/joinmarket/joinmarket-clientserver/jmvenv/lib/python3.7/site-packages/twisted/internet/defer.py", line 1475, in gotResult
    _inlineCallbacks(r, g, status)
  File "/home/joinmarket/joinmarket-clientserver/jmvenv/lib/python3.7/site-packages/twisted/internet/defer.py", line 1464, in _inlineCallbacks
    status.deferred.errback()
  File "/home/joinmarket/joinmarket-clientserver/jmvenv/lib/python3.7/site-packages/twisted/internet/defer.py", line 501, in errback
    self._startRunCallbacks(fail)
  File "/home/joinmarket/joinmarket-clientserver/jmvenv/lib/python3.7/site-packages/twisted/internet/defer.py", line 568, in _startRunCallbacks
    self._runCallbacks()
--- <exception caught here> ---
  File "/home/joinmarket/joinmarket-clientserver/jmvenv/lib/python3.7/site-packages/twisted/internet/defer.py", line 654, in _runCallbacks
    current.result = callback(current.result, *args, **kw)
  File "/home/joinmarket/joinmarket-clientserver/jmclient/jmclient/payjoin.py", line 1114, in onion_listen
    return onion_ep.listen(self.site)
builtins.AttributeError: 'NoneType' object has no attribute 'listen'

Implement Fidelity Bonds [released in JoinMarket v0.9.0]

Part of JoinMarket v0.9.0: https://github.com/JoinMarket-Org/joinmarket-clientserver/blob/master/docs/release-notes/release-notes-0.9.0.md

More info:
https://github.com/JoinMarket-Org/joinmarket-clientserver/blob/master/docs/fidelity-bonds.md

To test on signet switch to SIGNET in CONFIG - used the signet addresses below. The procedure is the same on mainnet.

Update to the JoinMarket release v0.9.0 by updating he JoininBox scripts first.
menu - UPDATE - ADVANCED - JBCOMMIT
then
menu - UPDATE - JOINMARKET.

As a Taker

no input needed to use Fidelity Bonds after updating to v0.9.0

For Makers

  • Generate a new wallet
    or to convert wallets to have fidelity bonds use the seed backup or the wallet-tool.py method:

    (showseed) Shows the wallet recovery seed and hex seed.

    It is to be implemented in the menu. Until then the CLI is simple:
    (jmvenv):~/joinmarket-clientserver/scripts$ ./wallet-tool.py WALLET.jmdat showseed

  • take note of the seed and use menu - WALLET - RECOVER:

    image
    same as:

    (jmvenv):~/joinmarket-clientserver/scripts$ ./wallet-tool.py recover

    input the seed (+ optional passphrase if there was one used).

  • Next on the second run of the DISPLAY menu option can check that m0 now shows the fbonds-mpk- prefix:

    image

  • if after the first sync funds are missing consider increasing the gap limit:
    ./wallet-tool.py --recoversync -g 200 WALLET.jmdat

  • Create a Fidelity Bond Address in the CLI:

    (jmvenv):~/joinmarket-clientserver/scripts$ ./wallet-tool.py WALLET.jmdat gettimelockaddress 2021-8

    image

  • Fund it:
    (if using signet can use signetfaucet.com)
    or send with a sweeping coinjoin, consider using an already mixed coin.

  • Check the DISPLAY or m0 again (highlighted the locked coin):

    image

Important: need to wait for a confirmation to have the bond active: https://explorer.bc-2.jp/tx/6fce4174113a762d18a4550147d8c7d1e271832e0ff040aa18949406627bac6a

  • To run the Order Book locally to display the Fidelity bonds only need to start it from the menu - OFFERS and see like on:

    http://gopnmsknawlntb4qpyav3q5ejvvk6p74a7y5xotmph4v64wl3wicscad.onion/

  • After starting the Yield Generator from the MAKER menu option as usual (using he fidelity bond enabled wallet) it appears in the Order Book with the Fidelity Bond:

    image

    image

  • Try the new tabs in the obwatcher for some interesting metrics:

    http://gopnmsknawlntb4qpyav3q5ejvvk6p74a7y5xotmph4v64wl3wicscad.onion/sybilresistance

    image

Scan and display Joinamrket coinjoins with `snicker-finder.py -j`

info:

$ python snicker/snicker-finder.py -h
Usage: snicker-finder.py [options] startingblock [endingblock]                      
                                                                                                                                                        
Find SNICKER candidate transactions on the blockchain.  Using a connection to                                                                                                                                     
Bitcoin Core, which allows retrieving full blocks, this script will list the                               
transaction IDs of transactions that fit the pattern of SNICKER, as codified        
in https://gist.github.com/AdamISZ/2c13fb5819bd469ca318156e2cf25d79 and as          
checked in the `jmbitcoin.snicker` module function `is_snicker_tx`, and also                                                                            
optionally, transactions that fit the pattern of Joinmarket coinjoins (see                                                                              
-j).  Pass a starting and finishing block value as argument. If the finishing       
block is not provided, it is assumed to be the latest block.  **Note that this      
is slow.**  This script does *NOT* require a wallet, but it does require a                                                                              
connection to Core, so does not work with `no-blockchain`. Note that this                                                                               
script obviates the need to have txindex enabled in Bitcoin Core in order to                                                                                                                                      
get full transactions, since it parses the raw blocks.                              
                                                                                                                                                        
Options:                                                                                                                                                
  -h, --help            show this help message and exit                                                                                     
  --datadir=DATADIR     Specify the path to a directory you want to use to                                                                                                                                        
                        store your userdata - wallets, logs and commitment
                        files - and your joinmarket.cfg. By default, the                                                                                                                                          
                        directory .joinmarket is used.                                                                                                  
  --recoversync         choose to do detailed wallet sync, used for recovering                                                                          
                        on new Core instance.                                                                                                           
  --wallet-password-stdin                                                           
                        Read wallet password from stdin                                                                                                 
  --version             Print JoinMarket version and exit.                                                                                              
  -f CANDIDATE_FILE_NAME, --filename=CANDIDATE_FILE_NAME                                                                                                
                        filename to write details of candidate transactions,                                                                            
                        default ./candidates.txt                                                                                                        
  -j, --include-jm      scan for Joinmarket coinjoin outputs, as well as                                                                                
                        SNICKER.                                

Example for the last 5 blocks:

$ BLOCKSTOSCAN=5
$ BLOCKHEIGHT=$(sudo -u bitcoin bitcoin-cli getblockchaininfo|grep blocks|awk '{print $2}'|cut -d, -f1)
$ python snicker/snicker-finder.py -j $((BLOCKHEIGHT - BLOCKSTOSCAN))

User data location: /home/joinmarket/.joinmarket/
2021-04-29 12:51:24,529 [INFO]  Finished processing block: 681082
2021-04-29 12:51:56,587 [INFO]  Finished processing block: 681083
2021-04-29 12:51:56,589 [WARNING]  Connection had broken pipe, attempting reconnect.
2021-04-29 12:52:31,581 [INFO]  Finished processing block: 681084
2021-04-29 12:52:31,582 [WARNING]  Connection had broken pipe, attempting reconnect.
2021-04-29 12:52:44,525 [INFO]  Found Joinmarket coinjoin transaction: 943b1f52d9c3e83de3c704c8d6b9d9eb39a169c8c4ebbfc9abdf4b6b00a32c02 in block: 681085
2021-04-29 12:53:10,783 [INFO]  Finished processing block: 681085
2021-04-29 12:53:43,872 [INFO]  Finished processing block: 681086
2021-04-29 12:53:43,874 [WARNING]  Connection had broken pipe, attempting reconnect.
2021-04-29 12:54:21,269 [INFO]  Finished processing block: 681087
done

``

[Feature Request] Tumbler

Tumbler script being a powerful tool to boost privacy I think it would be great to have it in the joininbox.

Is there any plans to be added?

Thank you

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.