Bitcoin Forum
May 03, 2024, 09:22:16 PM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Best way to send small amount of BTC to 200 unique addresses?  (Read 270 times)
synthylover (OP)
Copper Member
Newbie
*
Offline Offline

Activity: 29
Merit: 29


View Profile
September 16, 2020, 12:30:23 AM
Merited by LoyceV (7), suchmoon (4), ABCbits (1)
 #1

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!
1714771336
Hero Member
*
Offline Offline

Posts: 1714771336

View Profile Personal Message (Offline)

Ignore
1714771336
Reply with quote  #2

1714771336
Report to moderator
"With e-currency based on cryptographic proof, without the need to trust a third party middleman, money can be secure and transactions effortless." -- Satoshi
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
jackg
Copper Member
Legendary
*
Offline Offline

Activity: 2856
Merit: 3071


https://bit.ly/387FXHi lightning theory


View Profile
September 16, 2020, 12:52:47 AM
Last edit: September 16, 2020, 07:53:19 PM by jackg
Merited by Jet Cash (2), ABCbits (1)
 #2

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.
AriBitcoin
Full Member
***
Offline Offline

Activity: 214
Merit: 105


View Profile
September 16, 2020, 01:57:59 AM
Merited by Jet Cash (2), ABCbits (1)
 #3

You can migrate your wallet to Bitcoin Core and use the function called sendmany.
synthylover (OP)
Copper Member
Newbie
*
Offline Offline

Activity: 29
Merit: 29


View Profile
September 16, 2020, 03:47:36 AM
 #4

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?
pooya87
Legendary
*
Offline Offline

Activity: 3444
Merit: 10536



View Profile
September 16, 2020, 04:08:11 AM
 #5

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.

.
.BLACKJACK ♠ FUN.
█████████
██████████████
████████████
█████████████████
████████████████▄▄
░█████████████▀░▀▀
██████████████████
░██████████████
████████████████
░██████████████
████████████
███████████████░██
██████████
CRYPTO CASINO &
SPORTS BETTING
▄▄███████▄▄
▄███████████████▄
███████████████████
█████████████████████
███████████████████████
█████████████████████████
█████████████████████████
█████████████████████████
███████████████████████
█████████████████████
███████████████████
▀███████████████▀
█████████
.
Charles-Tim
Legendary
*
Offline Offline

Activity: 1540
Merit: 4837



View Profile
September 16, 2020, 06:45:57 AM
 #6

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

.
.HUGE.
▄██████████▄▄
▄█████████████████▄
▄█████████████████████▄
▄███████████████████████▄
▄█████████████████████████▄
███████▌██▌▐██▐██▐████▄███
████▐██▐████▌██▌██▌██▌██
█████▀███▀███▀▐██▐██▐█████

▀█████████████████████████▀

▀███████████████████████▀

▀█████████████████████▀

▀█████████████████▀

▀██████████▀▀
█▀▀▀▀











█▄▄▄▄
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
.
CASINSPORTSBOOK
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀▀█











▄▄▄▄█
mocacinno
Legendary
*
Offline Offline

Activity: 3388
Merit: 4919


https://merel.mobi => buy facemasks with BTC/LTC


View Profile WWW
September 16, 2020, 06:53:53 AM
Merited by ABCbits (1)
 #7

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.

█▀▀▀











█▄▄▄
▀▀▀▀▀▀▀▀▀▀▀
e
▄▄▄▄▄▄▄▄▄▄▄
█████████████
████████████▄███
██▐███████▄█████▀
█████████▄████▀
███▐████▄███▀
████▐██████▀
█████▀█████
███████████▄
████████████▄
██▄█████▀█████▄
▄█████████▀█████▀
███████████▀██▀
████▀█████████
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
c.h.
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
▀▀▀█











▄▄▄█
▄██████▄▄▄
█████████████▄▄
███████████████
███████████████
███████████████
███████████████
███░░█████████
███▌▐█████████
█████████████
███████████▀
██████████▀
████████▀
▀██▀▀
synthylover (OP)
Copper Member
Newbie
*
Offline Offline

Activity: 29
Merit: 29


View Profile
September 16, 2020, 03:32:52 PM
Merited by ABCbits (1)
 #8

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!
LoyceV
Legendary
*
Offline Offline

Activity: 3304
Merit: 16587


Thick-Skinned Gang Leader and Golden Feather 2021


View Profile WWW
September 16, 2020, 04:12:17 PM
 #9

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.

Quote
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.
It's not that bad: slightly over 6300 bytes for 200 SegWit outputs, and there's no need to use a high fee. Just use the lowest fee possible, it'll confirm in a few days (or weeks).

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.

synthylover (OP)
Copper Member
Newbie
*
Offline Offline

Activity: 29
Merit: 29


View Profile
September 16, 2020, 04:49:04 PM
 #10

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.

Quote
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.
It's not that bad: slightly over 6300 bytes for 200 SegWit outputs, and there's no need to use a high fee. Just use the lowest fee possible, it'll confirm in a few days (or weeks).

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? 
LoyceV
Legendary
*
Offline Offline

Activity: 3304
Merit: 16587


Thick-Skinned Gang Leader and Golden Feather 2021


View Profile WWW
September 16, 2020, 05:02:41 PM
 #11

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.

HCP
Legendary
*
Offline Offline

Activity: 2086
Merit: 4316

<insert witty quote here>


View Profile
September 17, 2020, 12:08:55 AM
Last edit: November 15, 2023, 12:56:20 AM by HCP
 #12

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.

█████████████████████████
████▐██▄█████████████████
████▐██████▄▄▄███████████
████▐████▄█████▄▄████████
████▐█████▀▀▀▀▀███▄██████
████▐███▀████████████████
████▐█████████▄█████▌████
████▐██▌█████▀██████▌████
████▐██████████▀████▌████
█████▀███▄█████▄███▀█████
███████▀█████████▀███████
██████████▀███▀██████████
█████████████████████████
.
BC.GAME
▄▄░░░▄▀▀▄████████
▄▄▄
██████████████
█████░░▄▄▄▄████████
▄▄▄▄▄▄▄▄▄██▄██████▄▄▄▄████
▄███▄█▄▄██████████▄████▄████
███████████████████████████▀███
▀████▄██▄██▄░░░░▄████████████
▀▀▀█████▄▄▄███████████▀██
███████████████████▀██
███████████████████▄██
▄███████████████████▄██
█████████████████████▀██
██████████████████████▄
.
..CASINO....SPORTS....RACING..
█░░░░░░█░░░░░░█
▀███▀░░▀███▀░░▀███▀
▀░▀░░░░▀░▀░░░░▀░▀
░░░░░░░░░░░░
▀██████████
░░░░░███░░░░
░░█░░░███▄█░░░
░░██▌░░███░▀░░██▌
░█░██░░███░░░█░██
░█▀▀▀█▌░███░░█▀▀▀█▌
▄█▄░░░██▄███▄█▄░░▄██▄
▄███▄
░░░░▀██▄▀


▄▄████▄▄
▄███▀▀███▄
██████████
▀███▄░▄██▀
▄▄████▄▄░▀█▀▄██▀▄▄████▄▄
▄███▀▀▀████▄▄██▀▄███▀▀███▄
███████▄▄▀▀████▄▄▀▀███████
▀███▄▄███▀░░░▀▀████▄▄▄███▀
▀▀████▀▀████████▀▀████▀▀
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!