Bitcoin fungibility is far too serious a subject to ignore, and that's why the mixing tools for our precious satoshis flourish. Latest, the BTCPay payment processor , which recently integrated the PayJoin implementation to improve the confidentiality of transactions between a buyer and a merchant.
I presented JoinMarket to you a while ago . It is a decentralized and non-custodial solution allowing you to mix your bitcoin fragments without ever having to deal with a third party. Specifically, we had seen how to hire the services of liquidity providers .
Now, I suggest you go even further, with precious satoshis to win. Follow me and become a liquidity provider !
More commonly called a maker or supplier of liquidity, its mission is to provide dormant funds to help those who wish to mix their bitcoins.
If you are used to masternodes and proof of stake, this may remind you of something. This is not the case, since your funds are
Prepare your maker
I will not come back to the installation of JoinMarket, you will find all the information in the previous article. Just remember that you will need a python environment and a properly configured full node .
A good maker must be properly set up in order to offer a sufficiently lucrative and realistic offer. This goes through the configuration of the yield-generator-basic.py python script . Like all scripts, you will find it in the joinmarket-clientserver / scripts directory . By default, it contains the following variables:
txfee = 100 cjfee_a = 500 cjfee_r = '0.00002' ordertype = 'swreloffer' #'swreloffer' or 'swabsoffer' nickserv_password = '' max_minsize = 100000 gaplimit = 6
Retain the goods because they are essential.
A liquidity provider can offer its offer with two types of fees.
This choice is materialized with the ordertype variable . Configured to swreloffer , the requester of the joint transaction ( taker ) will have to pay you fees proportional to the transaction. This percentage is defined by the variable cjfee_r which defaults to 0.002% of the attached transaction.
This choice is materialized with the ordertype variable . Configured to swreloffer , the requester of the joint transaction ( taker ) will have to pay you fees proportional to the transaction. This percentage is defined by the variable cjfee_r which defaults to 0.002% of the attached transaction.
You can choose to define a swabsoffer type order and in this case, the requester will have to pay you a fixed amount which will have to be defined in the variable cjee_a . By default, the requester will have to pay you 500 satoshis regardless of the amount of the attached transaction.
That's not all ! Even if the mining costs are borne by the liquidity applicant, the supplier can participate by specifying how high via the variable txfee . By default, as a liquidity provider, you will pay 100 satoshis.
Using all of its parameters and the amount of funds present in your * wallet, the yield-generator-basic.py scripts will generate an offer including in particular the minimum and maximum capacity of the liquidity provider.
The maximum capacity will always be slightly lower than your balance.
The minimum capacity will be determined so that the liquidity provider is always profitable . The higher your costs, the lower your minimum capacity.
There is no ideal configuration, however I do not recommend betting on very low costs . Indeed, you will no doubt win more offers , but for derisory amounts and this will not maximize the blocking of your funds. Not to mention that you will have to deduct the costs of depositing and leaving your wallet. We will come back to this a little later, but in any case, we will have to bet on the long term. Count several months.
Furthermore, I recommend that you compare your offer with the order book that you find at the following address: https://joinmarket.me/ob/ .
Finally, be aware that there is an alternative script called yg-privacyenhanced.py . It avoids the identification of a liquidity provider through the parameters of its offer by slightly modifying the values of the latter. I highly recommend it . blocked nor inactive . They will also have to work hard.
A seemingly simple job
As we saw in the previous article, JoinMarket can be summed up as a Bitcoin super wallet with Python scripts . As a liquidity provider, your job will be to deposit your bitcoins in your wallet, launch one of these famous scripts and wait…
In practice, you will have to find the right configuration to be profitable . This article will not give you the turnkey solution to easily gain satoshis, but will give you the means to get started more serenely.
Last thing, and if you really want to embark on the adventure, go ahead and do not just deposit a few tens of thousands of satoshis. Go for it tens of millions.
Prepare your maker
I will not come back to the installation of JoinMarket, you will find all the information in the previous article. Just remember that you will need a python environment and a properly configured full node .
A good maker must be properly set up in order to offer a sufficiently lucrative and realistic offer. This goes through the configuration of the yield-generator-basic.py python script . Like all scripts, you will find it in the joinmarket-clientserver / scripts directory . By default, it contains the following variables:
txfee = 100 cjfee_a = 500 cjfee_r = '0.00002' ordertype = 'swreloffer' #'swreloffer' or 'swabsoffer' nickserv_password = '' max_minsize = 100000 gaplimit = 6
Retain the goods because they are essential.
A liquidity provider can offer its offer with two types of fees.
This choice is materialized with the ordertype variable . Configured to swreloffer , the requester of the joint transaction ( taker ) will have to pay you fees proportional to the transaction. This percentage is defined by the variable cjfee_r which defaults to 0.002% of the attached transaction.
This choice is materialized with the ordertype variable . Configured to swreloffer , the requester of the joint transaction ( taker ) will have to pay you fees proportional to the transaction. This percentage is defined by the variable cjfee_r which defaults to 0.002% of the attached transaction.
You can choose to define a swabsoffer type order and in this case, the requester will have to pay you a fixed amount which will have to be defined in the variable cjee_a . By default, the requester will have to pay you 500 satoshis regardless of the amount of the attached transaction.
That's not all ! Even if the mining costs are borne by the liquidity applicant, the supplier can participate by specifying how high via the variable txfee . By default, as a liquidity provider, you will pay 100 satoshis.
Using all of its parameters and the amount of funds present in your * wallet, the yield-generator-basic.py scripts will generate an offer including in particular the minimum and maximum capacity of the liquidity provider.
The maximum capacity will always be slightly lower than your balance.
The minimum capacity will be determined so that the liquidity provider is always profitable . The higher your costs, the lower your minimum capacity.
There is no ideal configuration, however I do not recommend betting on very low costs . Indeed, you will no doubt win more offers , but for derisory amounts and this will not maximize the blocking of your funds. Not to mention that you will have to deduct the costs of depositing and leaving your wallet. We will come back to this a little later, but in any case, we will have to bet on the long term. Count several months.
Furthermore, I recommend that you compare your offer with the order book that you find at the following address: https://joinmarket.me/ob/ .
Finally, be aware that there is an alternative script called yg-privacyenhanced.py . It avoids the identification of a liquidity provider through the parameters of its offer by slightly modifying the values of the latter. I highly recommend it .
Submit your offer
If you come from the previous article, you should have a functional configuration . However, I invite you to create a new wallet in order to deposit your funds there.
Launch the python environment by launching the following command in the joinmarket-clientserver directory :
source jmvenv/bin/activate
Create a new wallet with the following command in the scripts directory and give it a new name to differentiate it from your previous wallet:
python wallet-tool.py generate
All you have to do is send your funds to one of the addresses in mixpeth 0. You can retrieve it with the following command:
python wallet-tool.py NomDuWallet.jmdat
Little tip to gain a little more anonymity, I recommend that you modify your configuration file so that the script connects to the IRC room through TOR . To do this, edit the joinmarket.cfg file that you will find in the ~ / .joinmarket / directory .
Remove the character # from the following lines in order to uncomment them:
- In the [MESSAGING: server1] section:
host = darksci3bfoka7tw.onion socks5 = true
- In the [MESSAGING: server2] section:
host = ncwkrwxpq2ikcngxq3dy2xctuheniggtqeibvgofixpzvrwpa77tozqd.onion port = 6667 usessl = false socks5 = true
After 5 confirmations, your wallet and ready . You just have to launch the script with the following command:
python yield-generator-basic.py NomDuWallet.jmdat
After a few seconds, the latter will position its liquidity offer with a message like:
offerlist=[{'oid': 0, 'ordertype': 'swreloffer', 'minsize': 100000, 'maxsize': 907870980, 'txfee': 45, 'cjfee': '0.000728'}]
The offer is valid as long as the script is active . Each restart will imply a new offer.
As soon as it wins an offer, you will see messages describing the transaction in which the script participated as well as the costs garnered with messages of this type:
filling offer, mixdepth=0, amount=1000000 sending output to address=3xxxxxxxxxxxxxxxxxxxxxx potentially earned = 1000
These messages indicate that the script has used your funds up to 1,000,000 satoshis to send them to the address “3xxxxxxxxxxxxxxxxxxxxxx” in your wallet. This transaction earned you 1000 satoshis.
Exit from JoinMarket
Unlike tumbler , the liquidity provider script will continue to use your funds to send them to mixdepth disputes in your wallet. As a reminder, these are compartments allowing to partition your funds in order to preserve the efficiency of your joined transactions.
The problem comes the day you have to collect your funds from your hardware wallet. First advice, never send your funds to your everyday wallet. If you are using a Ledger , I recommend that you use a new account using Ledger Live.
In view of the functioning of the JoinMarket wallet , you will need to send your funds compartment by compartment (mixdepth) to different addresses. If you want to preserve your earned anonymity, I recommend that you use the following command and use other liquidity providers to mix your satoshis:
The following order will send all funds from compartment 0 (mixdepth) to the address 3xxxx in a joint transaction which will bring together between 4 and 6 participants:
python sendpayment.py -m 0 wallet.jmdat 0 3xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
If you do not want to use a joined transaction, you can issue the following command:
python sendpayment.py -m 0 -N 0 wallet.jmdat 0 3xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
You will need to carry out these operations for all of your compartments . Modify the -m parameter to specify it.
You will realize that these transactions will cost you quite a lot . This is why a liquidity provider must be ready to mobilize its funds over the long term in order to avoid being in a deadweight loss.
In conclusion, although seemingly simple, being a liquidity provider implies having a good knowledge of the Bitcoin protocol and being in possession of sufficiently large funds. In return, and if you have time in front of you, you will be able to mix your precious satoshis while accumulating what is a real gift for any Bitcoin maximalist!
Commentaires
Enregistrer un commentaire