Author

Topic: Coinjoin software joinstr added an electrum plugin (Read 204 times)

legendary
Activity: 2492
Merit: 5865
Self-proclaimed Genius
It's a python dependency which should be installed with: ./python -m pip install nostrj like the other three.
However, it requires "pkg-config" which is tricky to install in Windows and may not even work
-snip-
I can't make it work still have some errors when using that command it seems it's more complicated on Windows to make this Coinjoin work than installing it on Linux.

This is my error below both normal command prompt and in powershell run as admin.
Code:
      'pkg-config' is required to install this package. Please see the README for details.
Just what I've said.

I tried to make this work since you seem to really need to use this in Windows but;
Even provided with a compiled "pkg-config.exe", nostrj will still error out during installation due to one of its requirement "secp256k1" having issues with Windows.
With that, I'll just suggest you to use Linux if you want to use joinstr plugin with Electrum. (or try other methods but I can't help you any further)
legendary
Activity: 3360
Merit: 3094
BTC price road to $80k
It's a python dependency which should be installed with: ./python -m pip install nostrj like the other three.
However, it requires "pkg-config" which is tricky to install in Windows and may not even work
and honestly, I never plan to use nostrj in Electrum Windows so I did not bother to go though the process of installing pkg-config to test it.

I can't make it work still have some errors when using that command it seems it's more complicated on Windows to make this Coinjoin work than installing it on Linux.

This is my error below both normal command prompt and in powershell run as admin.

Code:
PS C:\Windows\system32> python -m pip install nostrj
Collecting nostrj
  Using cached nostrj-0.0.0-py3-none-any.whl.metadata (7.1 kB)
Collecting cffi>=1.15.0 (from nostrj)
  Using cached cffi-1.16.0-cp311-cp311-win_amd64.whl.metadata (1.5 kB)
Collecting cryptography>=37.0.4 (from nostrj)
  Using cached cryptography-42.0.8-cp39-abi3-win_amd64.whl.metadata (5.4 kB)
Collecting pycparser>=2.21 (from nostrj)
  Using cached pycparser-2.22-py3-none-any.whl.metadata (943 bytes)
Collecting python-socks>=2.1.1 (from nostrj)
  Using cached python_socks-2.5.0-py3-none-any.whl.metadata (7.0 kB)
Collecting secp256k1>=0.14.0 (from nostrj)
  Using cached secp256k1-0.14.0.tar.gz (2.4 MB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... error
  error: subprocess-exited-with-error

  × Getting requirements to build wheel did not run successfully.
  │ exit code: 1
  ╰─> [1 lines of output]
      'pkg-config' is required to install this package. Please see the README for details.
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
error: subprocess-exited-with-error

× Getting requirements to build wheel did not run successfully.
│ exit code: 1
╰─> See above for output.

note: This error originates from a subprocess, and is likely not a problem with pip.

Is there any risk of installing this "pkg-config"? It seems it's complicated I saw that pkg-config is for 32bit it might be incompatible with 64bit OS?
I saw many people having issues installing pkg-config no luck I guess to make this work on Windows.
legendary
Activity: 2492
Merit: 5865
Self-proclaimed Genius
Now it shows on the plugins but when enabling it the error popup it says "sorry" and I already made the first 3 commands from the OP work what do you think look at the image below.
After checking the traceback the error shows "ModuleNotFoundError: No module named 'nostr" but I already tried the command above and it work just fine. It should be installed on Electrum I guess?
The plugin will appear as long as the plugin is present whether you have the dependencies or not.
But it wont work without those four, refer to this:
But to make "joinstr" to work without errors, "nostrj" should be installed as well as the three easy-to-install dependencies.

It's a python dependency which should be installed with: ./python -m pip install nostrj like the other three.
However, it requires "pkg-config" which is tricky to install in Windows and may not even work
and honestly, I never plan to use nostrj in Electrum Windows so I did not bother to go though the process of installing pkg-config to test it.
legendary
Activity: 3360
Merit: 3094
BTC price road to $80k
Yes, the provided "make_libsecp256k1.sh" script to build it only works in Linux.
If you need one and don't have access to linux, download this already-built dll provided by one of the core developers,
here: https://github.com/spesmilo/electrum/issues/5976#issuecomment-878333480

And yes, running Electrum from source works in Windows if all the requirements are provided (use python 3.11):
[~Image snip~]

But to make "joinstr" to work without errors, "nostrj" should be installed as well as the three easy-to-install dependencies.

Now it shows on the plugins but when enabling it the error popup it says "sorry" and I already made the first 3 commands from the OP work what do you think look at the image below.



After checking the traceback the error shows "ModuleNotFoundError: No module named 'nostr" but I already tried the command above and it work just fine. It should be installed on Electrum I guess?
legendary
Activity: 2492
Merit: 5865
Self-proclaimed Genius
-snip-
It seems that this only works on Linux because I tried to search for installing this elliptic curve but no one success installing it in Windows.
Yes, the provided "make_libsecp256k1.sh" script to build it only works in Linux.
If you need one and don't have access to linux, download this already-built dll provided by one of the core developers,
here: https://github.com/spesmilo/electrum/issues/5976#issuecomment-878333480

And yes, running Electrum from source works in Windows if all the requirements are provided (use python 3.11):


But to make "joinstr" to work without errors, "nostrj" should be installed as well as the three easy-to-install dependencies.
legendary
Activity: 3360
Merit: 3094
BTC price road to $80k

And heads up; after all that, Electrum requires you to build or provide "secp256k1" to run from source.

Is there any update if you made it work on Windows?
Did you build "secp256k1" and add the plugin to Electrum on Windows?
It seems that this only works on Linux because I tried to search for installing this elliptic curve but no one success installing it in Windows.
legendary
Activity: 2870
Merit: 7490
Crypto Swap Exchange
But if you open the old wallet after CoinJoin process (before creating new wallet and move your coin), the wallet still list of your address to certain Electrum server which defeat the point. Although your idea would work if joinstr plugin let you perform CoinJoin where the destination is address created by different wallet or created by someone else.
The fastest way is to use the Portable version to create a new wallet, connecting to Tor and a different server. The correct way is to delete all wallet files, create a temporary wallet and change the server between the wallet before coinjoin and the wallet after coinjoin.

Both ways you mentioned should works. Although it's not convenient and i expect some people bound to make mistake which may reduce the privacy.
legendary
Activity: 2492
Merit: 5865
Self-proclaimed Genius
Edit: I got errors when trying the Python command to install dependencies any thoughts if this will work on Windows?
All three python dependencies can be installed to Python on Windows except "nostrj" which requires quite a lot of things to do to install.
BTW, commands in Windows (PowerShell) should be (if running on Python install directry):
Code:
./python -m pip install pyqtspinner
./python -m pip install pillow
./python -m pip install qrcode

Result:


You may have to do this to install nostrj: https://stackoverflow.com/questions/1710922/how-to-install-pkg-config-in-windows

And heads up; after all that, Electrum requires you to build or provide "secp256k1" to run from source.
legendary
Activity: 3360
Merit: 3094
BTC price road to $80k
It seems that  this only work on Linux users?
Have you tried adding this plugin on Electrum Windows?

I want to try this but the commands provided from the OP seems only works on Linux OS?

Edit: I got errors when trying the Python command to install dependencies any thoughts if this will work on Windows?
sr. member
Activity: 406
Merit: 443

But if you open the old wallet after CoinJoin process (before creating new wallet and move your coin), the wallet still list of your address to certain Electrum server which defeat the point. Although your idea would work if joinstr plugin let you perform CoinJoin where the destination is address created by different wallet or created by someone else.
The fastest way is to use the Portable version to create a new wallet, connecting to Tor and a different server. The correct way is to delete all wallet files, create a temporary wallet and change the server between the wallet before coinjoin and the wallet after coinjoin.
legendary
Activity: 2870
Merit: 7490
Crypto Swap Exchange
Aside from what @nc50lc said, you'll need to run your own node and Electrum server to actually achieve some privacy. By default, Electrum send list of your address to Electrum server where anyone could run it.
connecting your wallet via Tor and creating a new wallet after each coinjoin mixing will help you to avoid running a full node (although this is the best).

But if you open the old wallet after CoinJoin process (before creating new wallet and move your coin), the wallet still list of your address to certain Electrum server which defeat the point. Although your idea would work if joinstr plugin let you perform CoinJoin where the destination is address created by different wallet or created by someone else.
sr. member
Activity: 406
Merit: 443
Aside from what @nc50lc said, you'll need to run your own node and Electrum server to actually achieve some privacy. By default, Electrum send list of your address to Electrum server where anyone could run it.
connecting your wallet via Tor and creating a new wallet after each coinjoin mixing will help you to avoid running a full node (although this is the best).
legendary
Activity: 2870
Merit: 7490
Crypto Swap Exchange
It means from now we do not need a mixer or any other coinjoin service. We can do it through Electrum?

Aside from what @nc50lc said, you'll need to run your own node and Electrum server to actually achieve some privacy. By default, Electrum send list of your address to Electrum server where anyone could run it.
legendary
Activity: 2492
Merit: 5865
Self-proclaimed Genius
It means from now we do not need a mixer or any other coinjoin service. We can do it through Electrum?
Depends on who's "we".
If the "mainstream", that depends if the plugin will be included to the official repository and the dependencies be shipped in the release binaries.
Otherwise, it'll only be accessible to users who know how to include an Electrum plugin or can follow the given instrcutions.

Current plugin directory does not include "joinstr": github.com/spesmilo/electrum/tree/master/electrum/plugins
So, it's currently only available to power-users.
legendary
Activity: 2800
Merit: 2736
Farewell LEO: o_e_l_e_o
It means from now we do not need a mixer or any other coinjoin service. We can do it through Electrum?
sr. member
Activity: 406
Merit: 443
Use this tutorial to use electrum plugin for joinstr on Ubuntu.  https://uncensoredtech.substack.com/p/tutorial-electrum-plugin-for-joinstr

Downloading the latest electrum version, verifying the signatures, and run the below commands

Code:
$ sudo apt-get install automake libtool
$ ./contrib/make_libsecp256k1.sh

$ sudo apt-get install python3-pyqt5


Install plugin dependencies:

Code:
$ pip install nostrj
$ pip install pyqtspinner
$ pip install pillow
$ pip install qrcode

Download this file https://gitlab.com/invincible-privacy/joinstr/-/tree/main/plugin/zip/v0.1.0 Extract and save it.
Unpack directory into your electrum/plugins directory.
(If you don't know it, running electrum.plugins.__path__ in the Electrum console tab.)


Restart Electrum, and then
Code:
./run_electrum —signet

Save these settings:



Then you will have 3 options through which you can create a new pool, your pools or view other pools, join one of those pools and then you will see the QR code for their public key, pay a one time fee to use this key and Once all peers register signed inputs, coinjoin transaction is created and broadcasted.

For steps to create your own pool,  click on the tutorial link. https://uncensoredtech.substack.com/p/tutorial-electrum-plugin-for-joinstr
Jump to: