To start the mixer server, run:
sbt +run
Note the first compile takes a while due to a forked dependency being built from source.
Once the server has started, visit http://localhost:8081/docs to see the available endpoints and their documentation.
The api for this mixer deviates slightly from the specification. To mix Jobcoins:
- Ask for a mixer deposit address using
/getDepositAddress
- Deposit your coins into that address
- Send the mixer that address, as long with a list of addresses you own, and some mixing parameters:
maxMixerFee
specifies the maximum allowable service fee. The actual fee taken will be a randomly generated number between 0 and the specified amount. This is to make it harder to map addresses based on transactions.maxTransactionSeconds
is the maximum amount of time the mixer will wait before making deposits into your account. The actual amount of time the mixer will wait is a randomly generated number of seconds between 0 and the specified maximum.
This mixer associates the deposit address to withdrawal addresses only after funds have already been deposited. In a real system this would require the mixer to provide an authentication method associated with the deposit address it provides, which may be undesirable.
This codebase is split into two projects:
api
, which specifies the APIs of the jobcoin client and the mixer servermixer
, which contains the implementation of the mixer api inapi
To run the tests:
sbt +test
- Persist planned transactions (but be careful about keeping transactions logs). Currently there is no way to recover from a failure when depositing coins from the mixer account to the user accounts.
- More tests™