Author

Topic: Best way to send small amount of BTC to 200 unique addresses? (Read 291 times)

HCP
legendary
Activity: 2086
Merit: 4361
I was reading up on sendmany.  Does it have to be done from Bitcoin Core, or could it be done from a GUI type wallet, and if so, where is it!?
For the record... Bitcoin Core does have a GUI... and it's easy to do "sendmany" in the GUI... you simply click the "add recipient" button at the bottom of the send screen and it will add another recipient section for another address/label/amount:


Obviously, not as easy as creating the CSV file and bulk importing 100+ payments into Electrum Tongue, but if you already have Bitcoin Core and you're wanting to make multiple payments in one transaction, it is quite simple and easy.
legendary
Activity: 3290
Merit: 16489
Thick-Skinned Gang Leader and Golden Feather 2021
You said "The 0.0001 BTC on each physical Bitcoin will be too little to use, " but does it matter what the value of that bitcoin will be in 10-20 years, or will the fee to send also increase at the same rate as the value of bitcoin?   A particular amount of BTC dust will always be dust even if 1 BTC = 1 Million USD?
Nobody knows Cheesy
But 10,000 sat means there's nothing left if you use just 90 sat/byte fee. Fees have been 10 times higher than that. But by the time it's worth $100, I can only hope fees won't be $100+.

Can't the owner of the 10,000 Satoshi coin, send the funds to their own wallet at 1 satoshis/vbyte which should confirm in 24 hours and only cost about $.03?
You can always send with the lowest possible fee, it's just that the 24 hours is no guarantee in the future.
When I pay an online payment processor, they usually charge an extra fee because of their cost to consolidate all those small payments again. That fee alone is usually more than 10000 sat. Not all sites make you pay such a fee.
copper member
Activity: 30
Merit: 29
I'd suggest using pay to many in electrum
This is what I would use (I fixed your typo).
Simply use a spreadsheet to create a list with 200 lines like this:
Code:
bc1qwd9pg4a6yejnpaakp58vwc759kgyf5x2qunuu8,0.0001
Then copy/paste that into the "Pay to" field in Electrum.

This whole process will be done no more than 6 times (200 sent once, and then 100 sends five more times). I'm making some physical bitcoins.
You're basically creating Bitcoin dust. Even though it doesn't take much fee to fund, spending that many small amounts costs more in fees. The 0.0001 BTC on each physical Bitcoin will be too little to use, because if someone sends it, the receiver will get an even smaller amount and they too have to pay a transaction fee to use/consolidate the funds. Unless someone is going to consolidate many of those small inputs at the same time, there's not much point in using them. I thought you should realize this before turning 0.07 BTC into dust.

Is there some kind of use case for going with the LN here?  If so, how would I go about it?
This would be interesting, but the only method I've seen so far is custodial. For a physical Bitcoin that's probably going to remain untouched in a long time, that's not a good solution.

You said "The 0.0001 BTC on each physical Bitcoin will be too little to use, " but does it matter what the value of that bitcoin will be in 10-20 years, or will the fee to send also increase at the same rate as the value of bitcoin?   A particular amount of BTC dust will always be dust even if 1 BTC = 1 Million USD? 
legendary
Activity: 3290
Merit: 16489
Thick-Skinned Gang Leader and Golden Feather 2021
I'd suggest using pay to many in electrum
This is what I would use (I fixed your typo).
Simply use a spreadsheet to create a list with 200 lines like this:
Code:
bc1qwd9pg4a6yejnpaakp58vwc759kgyf5x2qunuu8,0.0001
Then copy/paste that into the "Pay to" field in Electrum.

This whole process will be done no more than 6 times (200 sent once, and then 100 sends five more times). I'm making some physical bitcoins.
You're basically creating Bitcoin dust. Even though it doesn't take much fee to fund, spending that many small amounts costs more in fees. The 0.0001 BTC on each physical Bitcoin will be too little to use, because if someone sends it, the receiver will get an even smaller amount and they too have to pay a transaction fee to use/consolidate the funds. Unless someone is going to consolidate many of those small inputs at the same time, there's not much point in using them. I thought you should realize this before turning 0.07 BTC into dust.

Is there some kind of use case for going with the LN here?  If so, how would I go about it?
This would be interesting, but the only method I've seen so far is custodial. For a physical Bitcoin that's probably going to remain untouched in a long time, that's not a good solution.
copper member
Activity: 30
Merit: 29
This is exactly the kind of advice I needed.   I think I'll put the public addresses in a CSV and test a small batch using electrum. 

This whole process will be done no more than 6 times (200 sent once, and then 100 sends five more times). I'm making some physical bitcoins.

I was able to use the link above to calculate a very inexpensive send if I'm willing to wait 48 blocks for confirmation or 8 hours, (which I am): Total cost estimate: $2.30

I'm not a coder/scripter so making a cool "time saving" workflow probably would take a long time. :-)

Thank you all!
legendary
Activity: 3584
Merit: 5243
https://merel.mobi => buy facemasks with BTC/LTC
I guess it would depend on wether this is a one-time thing, or if you're going to pay 200 unique addresses every couple of days/weeks/months.

In the first case, i'd probably follow the advice that was given and use electrum... You can prepare the 200 addresses in a text editor and paste them into electrum pay to many gui window in batches.

In the second case (you have to repeat this task every couple of days/weeks/months) it might be usefull if you'd add some automation... I'm thinking about using an app that scans the qr code and posts it to a script that captures the addresses in a db or an ascii file.
Then i'd be thinking about a second script that uses electrum's commandline, or bitcoin core's bitcoin-cli to create a transaction funding more and more addresses. Each loop would add one extra address to the transaction, sign the transaction, look at it's size => if it's < 100 kb, add one more, if it's > 100 kb broadcast the previous tx and start creating a new one.
This workflow would cut down your processing time to a minimum and save as much fees as humanly possible... You'd basically have to scan the 200 qr codes with your mobile, open the terminal, unlock your wallet, run 1 script... And finished... But building this workflow would be time-consuming.
legendary
Activity: 1512
Merit: 4795
Leading Crypto Sports Betting & Casino Platform
I'm mostly concerned about transfer fees.
You can check the quote below. You do not have to worry about the transactions fee, if you send to the 20 addresses one by one, it will cost you more fee. Although, sending to the 20 addresses will also cost you more fee but in a way that is far lesser than sending to 20 address one by one. What matters is the size or weight (segwit) of the transaction, not the total amount that you are sending.

Sending 20 single transactions with 1 input / 1 output each, costs 3-4 times more than sending a single transaction with 1 input / 20 outputs.

If you play with the site linked by Lucius:
1 input / 1 output: ~138 vbytes
20x 1 input / 1 output: ~2760 vbytes
1 input / 20 outputs: ~784 vbytes
legendary
Activity: 3472
Merit: 10611
I was reading up on sendmany.  Does it have to be done from Bitcoin Core, or could it be done from a GUI type wallet, and if so, where is it!?
most wallets do support adding more than one recipient to your transaction one way or another. for example in Electrum all you have to do is to choose "Pay to many" option from Tools menu and then entering one address with its amount per line in the "Pay to" field.

Quote
Also, I'm not clear on the fee savings of using sendmany.  You're sending more bytes because you have multiple addresses, so how does one estimate the cost/savings of actually using the sendmany function vs sending each one separately?
each transaction has two parts, inputs and outputs.
when you sent to many in one transaction, you don't have to repeatedly create new tx and have one or more inputs per tx. instead there is for example one input and 100 outputs compared to 100 transaction each having 1 input and 2 outputs (total 100 inputs and 200 outputs). and an input (tx_in) is the bigger part of a transaction because it contains the signature.
copper member
Activity: 30
Merit: 29
You can migrate your wallet to Bitcoin Core and use the function called sendmany.

I was reading up on sendmany.  Does it have to be done from Bitcoin Core, or could it be done from a GUI type wallet, and if so, where is it!?

Also, I'm not clear on the fee savings of using sendmany.  You're sending more bytes because you have multiple addresses, so how does one estimate the cost/savings of actually using the sendmany function vs sending each one separately?
full member
Activity: 214
Merit: 105
You can migrate your wallet to Bitcoin Core and use the function called sendmany.
copper member
Activity: 2856
Merit: 3071
https://bit.ly/387FXHi lightning theory
I'd suggest using pay to many in electrum or bitcoin core and not using qr codes but using plain text (or a converter).

The transaction might still be expensive though, I think that's 80000 bytes and at a high fee of 100 sat per byte it'd cost 0.08btc, at the minimum fee with a longer conf it'd cost only 0.0008 but getting a transaction of that size to confirm at low fees light be harder.

You're also limited to aboout 2300 outputs before the 100kb mark where your transaction won't be relayed by the mempool afaik.
You might be better off doing it in batches of 250 or 500 to get a fast (within a day conf) with low fees.
copper member
Activity: 30
Merit: 29
Hi,

Let's say I have 200 unique segwit bc1 QR codes, and I want to send .0001 BTC to each address.  Is there a better solution than me scanning each one in my CashApp and sending it one at a time?  

I'm mostly concerned about transfer fees.  

Is there some kind of use case for going with the LN here?  If so, how would I go about it?  

Thank you!
Jump to: