Bitcoin Forum
May 07, 2024, 02:39:02 PM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: 1,500% transaction fee and 3,5 months to confirm?  (Read 987 times)
DougPeters (OP)
Newbie
*
Offline Offline

Activity: 15
Merit: 0


View Profile
April 24, 2014, 12:42:20 PM
Last edit: April 24, 2014, 02:34:56 PM by DougPeters
 #1

So my service is skimming a tiny 0,001% (1/1,000) fee off every payment that gets through it. Most of the transactions are actually micro-payments so there are thousands of tiny unspent outputs accumulating in the service's wallet. I'm worried now that I will not be able to spent these outputs without having to pay a load of transaction fees and wait for eternity for this payment to clear.

The average btc value of my unspent outputs that come out of the commissions is 100 satoshis (0,000001 btc). That means that if I want to cash out 100 btc, I need to spend on average 100,000,000 of these outputs.

According to: How to calculate transaction size before sending the transaction size is: in*148 + out*34 + 10 plus or minus 'in', which makes my withdrawal equal to: 100,000,000*148 + 2*34 + 10 + 100,000,000 = 14,900,000,078 bytes = 14,9 GB ?! (am I missing something here?)

The maximum block size is 1 MB so I will need to split this transaction in more than 14,900 transactions ?!

A transaction fee of 0.0001 btc per kB is required, so I will need to spend 0,0001 * 1,000 = 0,1 btc for each of these 14,900 transactions which means I will need at least 1,490 btc (to send 100 btc), which is roughly 15 times the amount I'm trying to send!

All these 14,900 transactions will need to be included on different blocks (since they would exceed the maximum block size otherwise) and since one block is found every 10 minutes on average, I will need to wait 14,900 * 10 minutes = 149,000 minutes = 2,483 hours = 103 days = 3 months and a half ?!

Please tell me I got this all wrong. I've really freaked out.
1715092742
Hero Member
*
Offline Offline

Posts: 1715092742

View Profile Personal Message (Offline)

Ignore
1715092742
Reply with quote  #2

1715092742
Report to moderator
1715092742
Hero Member
*
Offline Offline

Posts: 1715092742

View Profile Personal Message (Offline)

Ignore
1715092742
Reply with quote  #2

1715092742
Report to moderator
Each block is stacked on top of the previous one. Adding another block to the top makes all lower blocks more difficult to remove: there is more "weight" above each block. A transaction in a block 6 blocks deep (6 confirmations) will be very difficult to remove.
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
TierNolan
Legendary
*
Offline Offline

Activity: 1232
Merit: 1083


View Profile
April 24, 2014, 02:05:07 PM
 #2

It doesn't really matter how much you transfer, each transaction output takes the same amount of effort for the network to process.

It isn't unreasonable that if you put a large load on the network that you would have to pay high fees.

You might be able to get away with using free transactions, but then you would have to wait even longer.

The current blockchain is around 16GB, so consolidating your transactions would nearly double the total size.

Since there are only around 10 million outputs at the moment, I assume this is a future plan?

If so, you should look into things like payment channels.  They allow you to handle micropayments better.  This assumes that each customer makes lots of micropayments.

1LxbG5cKXzTwZg9mjL3gaRE835uNQEteWF
Rannasha
Hero Member
*****
Offline Offline

Activity: 728
Merit: 500


View Profile
April 24, 2014, 02:15:10 PM
 #3

Sorry to burst your bubble, but 100 satoshi outputs are not spendable according to the current protocol rules that miners apply. Any outputs below 5430 satoshis cost more in fees than they are worth, so a typical miner will not include such transactions in blocks.
DougPeters (OP)
Newbie
*
Offline Offline

Activity: 15
Merit: 0


View Profile
April 24, 2014, 02:48:20 PM
 #4

Since there are only around 10 million outputs at the moment, I assume this is a future plan?

If so, you should look into things like payment channels.  They allow you to handle micropayments better.  This assumes that each customer makes lots of micropayments.

Yes, the service rolled out only a couple of months ago but this is the way it currently works so we need to readjust its revenue model ASAP! Thanks for your suggestions!
DougPeters (OP)
Newbie
*
Offline Offline

Activity: 15
Merit: 0


View Profile
April 24, 2014, 03:04:20 PM
 #5

Sorry to burst your bubble, but 100 satoshi outputs are not spendable according to the current protocol rules that miners apply. Any outputs below 5430 satoshis cost more in fees than they are worth, so a typical miner will not include such transactions in blocks.

I thought there were some miners who don't follow the rules and can include them in their blocks. Nice.. Sad
teukon
Legendary
*
Offline Offline

Activity: 1246
Merit: 1004



View Profile
April 24, 2014, 03:06:45 PM
 #6

If you have lots of users making tiny payments, why not look into a "probabilistic payments" algorithm.  The idea is, instead of paying 100 satoshi, you pay 100`000 satoshi with a probability of 0.1% (some fun with crypto and proofs to be had here).  This will reduce your Bitcoin footprint (and therefore fees) 1000-fold while having negligible effect on users.
DougPeters (OP)
Newbie
*
Offline Offline

Activity: 15
Merit: 0


View Profile
April 24, 2014, 03:17:45 PM
 #7

If you have lots of users making tiny payments, why not look into a "probabilistic payments" algorithm.  The idea is, instead of paying 100 satoshi, you pay 100`000 satoshi with a probability of 0.1% (some fun with crypto and proofs to be had here).  This will reduce your Bitcoin footprint (and therefore fees) 1000-fold while having negligible effect on users.


That sounds like a good approach, I'll have to check it out ASAP, thank you for bringing it up.
gmaxwell
Moderator
Legendary
*
expert
Offline Offline

Activity: 4158
Merit: 8411



View Profile WWW
April 24, 2014, 05:26:38 PM
 #8

Sorry to burst your bubble, but 100 satoshi outputs are not spendable according to the current protocol rules that miners apply.
That isn't true!  The network tries to discourage you from _creating_ such outputs (because they tend to be uneconomical to spend), but you are in no way discouraged from spending them other that just from the cost of doing so.
Luke-Jr
Legendary
*
expert
Offline Offline

Activity: 2576
Merit: 1186



View Profile
April 24, 2014, 05:38:35 PM
 #9

So my service is skimming a tiny 0,001% (1/1,000) fee off every payment that gets through it. Most of the transactions are actually micro-payments so there are thousands of tiny unspent outputs accumulating in the service's wallet. I'm worried now that I will not be able to spent these outputs without having to pay a load of transaction fees and wait for eternity for this payment to clear.
Wow, the antispam fees are actually working for once, in a sense!
Your service is exactly what the fee aims to prevent.

Bitcoin's blockchain is not a micropayment system.

jl2012
Legendary
*
Offline Offline

Activity: 1792
Merit: 1097


View Profile
April 24, 2014, 05:52:29 PM
Last edit: April 24, 2014, 06:07:13 PM by jl2012
 #10

So my service is skimming a tiny 0,001% (1/1,000) fee off every payment that gets through it. Most of the transactions are actually micro-payments so there are thousands of tiny unspent outputs accumulating in the service's wallet. I'm worried now that I will not be able to spent these outputs without having to pay a load of transaction fees and wait for eternity for this payment to clear.
Wow, the antispam fees are actually working for once, in a sense!
Your service is exactly what the fee aims to prevent.

Bitcoin's blockchain is not a micropayment system.

Bitcoin could be a better system for micropayment, if it allows:

1. shorter public keys and key hash: you don't need the full protection just for 100 satoshi. Something that is bruteforcable in a few months is already more than enough

2. signing multiple inputs with one signature

3. adopt a balance based system

Donation address: 374iXxS4BuqFHsEwwxUuH3nvJ69Y7Hqur3 (Bitcoin ONLY)
LRDGENPLYrcTRssGoZrsCT1hngaH3BVkM4 (LTC)
PGP: D3CC 1772 8600 5BB8 FF67 3294 C524 2A1A B393 6517
Luke-Jr
Legendary
*
expert
Offline Offline

Activity: 2576
Merit: 1186



View Profile
April 24, 2014, 05:57:27 PM
 #11

So my service is skimming a tiny 0,001% (1/1,000) fee off every payment that gets through it. Most of the transactions are actually micro-payments so there are thousands of tiny unspent outputs accumulating in the service's wallet. I'm worried now that I will not be able to spent these outputs without having to pay a load of transaction fees and wait for eternity for this payment to clear.
Wow, the antispam fees are actually working for once, in a sense!
Your service is exactly what the fee aims to prevent.

Bitcoin's blockchain is not a micropayment system.

Bitcoin could be a better system for micropayment, if it allows:

1. shorter public keys and key hash: you don't need the full protection just for just 100 satoshi. Something that is bruteforcable in a few months is already more than enough

2. signing multiple inputs with one signature

3. adopt a balance based system
There are a number of ways Bitcoin could be extended to do micropayments; I was just commenting on the OP's present use.
(btw, your suggestion #3 is fatally flawed when it comes to avoiding double spends...)

jl2012
Legendary
*
Offline Offline

Activity: 1792
Merit: 1097


View Profile
April 24, 2014, 06:05:03 PM
 #12

So my service is skimming a tiny 0,001% (1/1,000) fee off every payment that gets through it. Most of the transactions are actually micro-payments so there are thousands of tiny unspent outputs accumulating in the service's wallet. I'm worried now that I will not be able to spent these outputs without having to pay a load of transaction fees and wait for eternity for this payment to clear.
Wow, the antispam fees are actually working for once, in a sense!
Your service is exactly what the fee aims to prevent.

Bitcoin's blockchain is not a micropayment system.

Bitcoin could be a better system for micropayment, if it allows:

1. shorter public keys and key hash: you don't need the full protection just for just 100 satoshi. Something that is bruteforcable in a few months is already more than enough

2. signing multiple inputs with one signature

3. adopt a balance based system
There are a number of ways Bitcoin could be extended to do micropayments; I was just commenting on the OP's present use.
(btw, your suggestion #3 is fatally flawed when it comes to avoiding double spends...)

I think I have found a solution: https://bitcointalk.org/index.php?topic=552624.msg6376604#msg6376604

Please see if you could find further flaws

Donation address: 374iXxS4BuqFHsEwwxUuH3nvJ69Y7Hqur3 (Bitcoin ONLY)
LRDGENPLYrcTRssGoZrsCT1hngaH3BVkM4 (LTC)
PGP: D3CC 1772 8600 5BB8 FF67 3294 C524 2A1A B393 6517
teukon
Legendary
*
Offline Offline

Activity: 1246
Merit: 1004



View Profile
April 24, 2014, 06:21:02 PM
 #13

If you have lots of users making tiny payments, why not look into a "probabilistic payments" algorithm.  The idea is, instead of paying 100 satoshi, you pay 100`000 satoshi with a probability of 0.1% (some fun with crypto and proofs to be had here).  This will reduce your Bitcoin footprint (and therefore fees) 1000-fold while having negligible effect on users.


That sounds like a good approach, I'll have to check it out ASAP, thank you for bringing it up.

No problem.  I think your situation is suitably uncommon/extreme that you won't find much more than theory.  Try searching for things like "provably fair coin flips" in this sub-forum.

If you do decide to take this route, some of the encryption techniques commonly used in provably fair gambling or decentralised mixing solutions could be useful too.  I lack the time to create a working implementation myself (it's on my to-do list but quite low down), but might be able to help out if you have further questions.
uminatsu
Newbie
*
Offline Offline

Activity: 55
Merit: 0


View Profile
April 24, 2014, 07:55:08 PM
 #14

You're doing it wrong if your service generates thousands of dust-sized outputs. You need to consolidate your outputs as you go.

I assume that a transaction under your current model is like this:

Input (x1): 
Payer Address (X BTC)

Outputs (x3):
Payee Address (Y BTC)
Service Wallet Address (100 satoshis)
Payer Change Address (X - Y - 0.00000001 BTC)


What you should do is to keep the Service Wallet Address accumulate the 100 satoshis as you go:

Inputs (x2):
Payer Address (X BTC)
Service Wallet Address (Z BTC)

Outputs (x3):
Payee Address (Y BTC)
Service Wallet Address (Z + 0.000001 BTC)
Payer Change Address (X - Y - 0.000001 BTC)
Peter882
Hero Member
*****
Offline Offline

Activity: 543
Merit: 500



View Profile
April 25, 2014, 12:15:21 PM
 #15

If you have a big input in your wallet, you could very slowly "consolidate" your bitcoin using high-priority free transaction.
Anyway, it seems there is a big flaw in your business. Smiley

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!