A crypto coins are not an anonymous protocol (but a pseudonymous system), our Coin Mixer PoC is an approach to maintaining privacy on our jobcoin network (for a tiny small fee π)!
We use Coin Mixer Server API endpoints to deploy our sophisticated mixer algorithm to your coin deposit!
To follow best practices, we set our variables and secrets into a .env
file, which can be copied from .env_sample
:
cp .env_sample .env
Set the following variables:
API_ADDRESS_URL = ''
API_TRANSACTIONS_URL = ''
SIGNIFICANT_DIGITS = 17
HOUSE_ADDRESS = 'Jobcoin-House'
FEE_PERCENTAGE = 0.1
WITHDRAW_MAX_VALUE = 1
The ephemeral hex
deposit address moves the coins to this address, where it's then mixed with other coins.
As Jobcoin Mixer deals with float transactions, this variable sets the desired precision when converting strings to float.
An integer number representing the percentage fee to be collected for the mixing service. Set to 0 for no fee.
Set the value for small withdrawal values for which Jobcoin Mixer will move from the House address to each personal addresses.
Jobcoin Mixer cares about your privacy, so setting this to smaller values makes the transactions more discrete!
If you would like to have Jobcoin Mixer withdrawing all coins in one unique transaction, simply leave this constant empty (None
).
You can install Jobcoin either via setup.py
or by running it straight from the executable (jobcoin/cli.py
).
Install jobcoin 0.0.1
with:
make install
Now you can run:
jobcoin
You can use either virtualenv
or pipenv
.
Install virtualenv
:
pip install virtualenv
Creating and sourcing the environment:
virtualenv venv
source venv/bin/activate
Install dependencies:
pip install -r requirements.txt
You can always check what is installed in your environment with:
pip freeze
Install pipenv
:
pip install pipenv
Create a new virtual environment using pipenv:
pipenv install
Activate:
pipenv shell
You can always check what is installed in your environment with:
pipenv graph
Remove the prefix jobcoin.
from every import at the top of the source files api.py
, cli.py
, and jobcoin.py
.
Then run:
./jobcoin/cli.py
If you are developing Jobcoin Mixer, you have the following resources:
make lint
make test
make clean
Note: to be able to run tests and linter, install:
pip install -r requirements_test.txt
- Improve unit tests. Add missing tests for
test_jobcoin.py
,test_cli.py
, andtest_util.py
. Add tests for failures and success, with better mocking and fixtures. - Improve private method
_is_empty()
as it loops over all the transactions address. As the list increases, this will take too long. Maybe we should simply check whether the address has zero coins? Should we think about a cache solution? - Deal with the increased size of the list of transactions being pulled from the server every time. Should we think about a cache solution?
- Convert the code to pure Python 3 (e.g.,
-> return
in the module name, etc.). Make sure the dependencies install Python3 libraries. Make sure the code run in Python3. - Adding
logging
everywhere, with different types of logging levels. - Improve rules for linting.