Pages:
Author

Topic: Why do we allow zero transaction blocks? (Read 4452 times)

legendary
Activity: 2940
Merit: 1333
February 24, 2012, 04:12:06 AM
#23
The wallet always attempts to reduce the fee using older coins as necessary to minimize or eliminate any fee.

Are you sure about that?  I thought it didn't.

Read CWallet::SelectCoinsMinConf() in wallet.cpp.  It tries to spend as little as possible, ignoring coin age.
legendary
Activity: 2940
Merit: 1333
February 24, 2012, 02:35:03 AM
#22
The wallet always attempts to reduce the fee using older coins as necessary to minimize or eliminate any fee.

Are you sure about that?  I thought it didn't.
donator
Activity: 1218
Merit: 1079
Gerald Davis
February 24, 2012, 12:03:24 AM
#21
There would be no way to handle a massive amount of transactions without paying a fee of some kind? In other words, a completely free system to use?

Bitcoin isn't free.  It was never intended to be and never will be.  It is the largest distributed computing network in the world requiring hundreds of megawatts of power and millions of dollars in computing hardware.  What do you think pays for it?
hero member
Activity: 812
Merit: 1000
February 24, 2012, 12:02:55 AM
#20
you keep getting hung up on # of wallets.  # of wallets would have no effect on fees.  Amazon could have 1 wallet or a quadrillion wallets running on a quadrillion computers.  It would have absolutely no effect on fees, spam, transaction volume, etc.

actually d&t i think it would have a negative effect.

imagine a wallet has 3 transactions:

3 btc: old
3 btc: old
4 btc: new


you could make 2 x 1btc spends from that without incurring fees.

but let's say you had them in 3 different wallets:

a = 3 btc: old
b = 3 btc: old
c = 4 btc: new

if you spend from the 'c' wallet, you'd have to pay a fee because it can't find any old transactions to spend from... even though you've got plenty of old transactions in your other wallets.

donator
Activity: 1218
Merit: 1079
Gerald Davis
February 23, 2012, 11:56:41 PM
#19
He did make one good point though. He said that Bitcoin couldn’t be used for any real business because you need to send too many continuous transactions per hour to make it useful to big business unless they had an infinite # of wallets on a shitload of computers or they would have to pay Tx fees like a Visa terminal only the fees would be slightly lower. 

The later contradicts the former.

Couldn't be used for business except the fees would be lower.  How would lower fees make it impossible to be used by business.

Also you keep getting hung up on # of wallets.  # of wallets would have no effect on fees.  Amazon could have 1 wallet or a quadrillion wallets running on a quadrillion computers.  It would have absolutely no effect on fees, spam, transaction volume, etc.
donator
Activity: 1218
Merit: 1079
Gerald Davis
February 23, 2012, 11:49:08 PM
#18
You are helping me settle an argument with someone.

So, there is no amount small enough or large enough that (since you don’t like 20 we’ll say a few computers) you could send in a continuous stream of transactions increasing the size of block chain to a point that it would be difficult to hold it on a single hard drive (my position on the issue)? Correct?


Not without prohibitively massive cost.  That is the entire point of spam fee.  It prevents spam.   Well technically it doesn't prevent it.  If someone wanted to spend tens of millions of dollars acquiring bitcoins just to massively spam the the chain they could they would just lots tens of millions of dollars in wealth to transaction fees. Smiley  It would be a good day to be a miner.

Blockchain pruning could be used to clean up any "circular" spam.  To have a lasting effect you would need to send coins somewhere permanently (so it could be pruned out).  Thus costing you not just the spam fees but the principal.

TL/DR I wouldn't say impossible just prohibitively expensive.  You could also mine your own transactions "for free" but then you are limited to block size and how many blocks you can generate per day.  To generate a large number of blocks (full of spam) each day would require hundreds if not thousands of MH/s of hashing power (which isn't free). 
hero member
Activity: 812
Merit: 1000
February 23, 2012, 11:44:40 PM
#17
You are helping me settle an argument with someone.

So, there is no amount small enough or large enough that (since you don’t like 20 we’ll say a few computers) you could send in a continuous stream of transactions increasing the size of block chain to a point that it would be difficult to hold it on a single hard drive (my position on the issue)? Correct?


that's ridiculous in 2012... even an 'old' hard drive is 80gb+
a 'not old' hard drive is 500gb+.
donator
Activity: 1218
Merit: 1079
Gerald Davis
February 23, 2012, 11:33:51 PM
#16
So, if someone had 20 computers and 40 clients, one running in a VM and one on the desktop. That machine with the proper script could be made to send coins to itself in a continuous loop or to one of the other 20 in a series. Yes?


How many coins per transaction?

24 BTC?  You can send 24 BTC again in 6 confirmations without fee, since 6 confirmation is the minimum it could continue forever.  The point of the fees is to avoid cheaply spamming the network.  i.e. taking 1 BTC and sending a million 1 satoshi transactions and keep doing that every seconds until you generate TB worth of transactions.

The number of nodes is irrelivent.  It doesn't matter where you send coins.  Hell you can send them to another address in the same wallet.

Everytime you transfer a coin its time resets to 0.  If it is too young to be used in a new transaction you must pay a fee or wait.

So again, if someone had 20 computers and 40 clients, one running in a VM and one on the desktop. Each of the 40 wallets had 24BTC with the proper script could be made to send coins to itself in a continuous loop.
 
How long would it take for the associated bloat to affect the block chain?



I don't get the fascination of 20 computers.  I already explained you could send it from 1 address in a wallet to another address in the SAME wallet and it would generate the same amount of transactions, same amount of transaction data, and incur the same limits.

Using 20 computers and 40 wallets would just be stupid.  Lots of electricity to accomplish nothing.


As far as transferring 24 BTC continually. It would create negligible transaction volume.  You must wait 6 confirms before spending so you could perform 1 transaction per hour, or ~24 per day.  At 0.25 KB per day you would add a massive 6KB per day or 2MB per year.
legendary
Activity: 1750
Merit: 1007
February 23, 2012, 11:24:30 PM
#15
Just to add to the talk about fees (in the case of 0tx blocks):  Don't forget that you can send your coins anywhere without a fee when you're the one mining a block Smiley.  Or you could send .00000001 and tack on a 500 BTC fee, since you're the one mining that block [don't broadcast it, just include it in the block when you build it].
donator
Activity: 1218
Merit: 1079
Gerald Davis
February 23, 2012, 11:24:08 PM
#14
So, if someone had 20 computers and 40 clients, one running in a VM and one on the desktop. That machine with the proper script could be made to send coins to itself in a continuous loop or to one of the other 20 in a series. Yes?


How many coins per transaction?

24 BTC?  You can send 24 BTC again in 6 confirmations without fee, since 6 confirmation is the minimum it could continue forever.  The point of the fees is to avoid cheaply spamming the network.  i.e. taking 1 BTC and sending a million 1 satoshi transactions and keep doing that every seconds until you generate TB worth of transactions.

The number of nodes is irrelivent.  It doesn't matter where you send coins.  Hell you can send them to another address in the same wallet.

Everytime you transfer a coin its time resets to 0.  If it is too young to be used in a new transaction you must pay a fee or wait.
hero member
Activity: 812
Merit: 1000
February 23, 2012, 11:22:29 PM
#13
So, if someone had 20 computers and 40 clients, one running in a VM and one on the desktop. That machine with the proper script could be made to send coins to itself in a continuous loop or to one of the other 20 in a series. Yes?


sure, if they had RPC switched on i guess.

donator
Activity: 1218
Merit: 1079
Gerald Davis
February 23, 2012, 11:18:07 PM
#12
I’m going somewhere with this eventually.

So you can send one coin transactions repeatedly without a fee if the amount in the wallet is large enough because effectively the client will always look for the oldest coin to avoid fees. Correct?

EDIT: Repeatedly  

it also depends on how your wallet is constituted... if all those 'old' transactions are millions of 0.00000001 inputs, then you'll still get fees because of the data size (in bytes) of your transaction.


Ok, then what is the minimum Tx amount? How is that determined?

you can spend 0.00000001 without a fee if you have an old incoming 0.00000001 that was sent to your wallet.


If I send one coin a day to the wallet for 60 days could I then send .1 60 times an hour without a fee?
No because you can't send part of a coin.

If you have a 1 BTC input and want to send 0.1 you can't do that 10 times.

You have to send 1 BTC so you send 0.1 and get 0.9 back as change.  The change now has a time 0 and is too young to be sent without incurring a fee.
hero member
Activity: 812
Merit: 1000
February 23, 2012, 11:16:33 PM
#11
I’m going somewhere with this eventually.

So you can send one coin transactions repeatedly without a fee if the amount in the wallet is large enough because effectively the client will always look for the oldest coin to avoid fees. Correct?

EDIT: Repeatedly  

it also depends on how your wallet is constituted... if all those 'old' transactions are millions of 0.00000001 inputs, then you'll still get fees because of the data size (in bytes) of your transaction.


Ok, then what is the minimum Tx amount? How is that determined?

you can spend 0.00000001 without a fee if you have an old incoming 0.00000001 that was sent to your wallet.


If I send one coin a day to the wallet for 60 days could I then send .1 60 times an hour without a fee?

best guess: yes (for ONE hour)

then you'd have the remaining 90% as 60 x 0.9 btc in new change addresses.

after the first hour (the first 60 x 0.1 transactions), all your wallet would contain would be new addresses with 0.9 in them.

donator
Activity: 1218
Merit: 1079
Gerald Davis
February 23, 2012, 11:16:26 PM
#10
I’m going somewhere with this eventually.

So you can send one coin transactions repeatedly without a fee if the amount in the wallet is large enough because effectively the client will always look for the oldest coin to avoid fees. Correct?

EDIT: Repeatedly 

No because once you send it, it is gone and the wallet where it is received it is now time 0.
hero member
Activity: 812
Merit: 1000
February 23, 2012, 11:09:46 PM
#9
I’m going somewhere with this eventually.

So you can send one coin transactions repeatedly without a fee if the amount in the wallet is large enough because effectively the client will always look for the oldest coin to avoid fees. Correct?

EDIT: Repeatedly 

it also depends on how your wallet is constituted... if all those 'old' transactions are millions of 0.00000001 inputs, then you'll still get fees because of the data size (in bytes) of your transaction.


Ok, then what is the minimum Tx amount? How is that determined?

you can spend 0.00000001 without a fee if you have an old incoming 0.00000001 that was sent to your wallet.

hero member
Activity: 812
Merit: 1000
February 23, 2012, 11:05:59 PM
#8
I’m going somewhere with this eventually.

So you can send one coin transactions repeatedly without a fee if the amount in the wallet is large enough because effectively the client will always look for the oldest coin to avoid fees. Correct?

EDIT: Repeatedly  

it also depends on how your wallet is constituted... if all those 'old' transactions are millions of 0.00000001 inputs, then you'll still get fees because of the data size (in bytes) of your transaction.


edit: also, even if you had a wallet with 1000 BTC which was just ONE really old transaction... as soon as you spend 1 btc from it, the remaining 999 btc will be sent as 'change' and will no longer be an old transaction, but a really new one.

donator
Activity: 1218
Merit: 1079
Gerald Davis
February 23, 2012, 10:27:02 PM
#7
@DnT

What amount do you need to send to always avoid transaction fees or is there a minimum amount? How does that work?


It is based on time and amount (not just total amount but amounts of the prior output).

priority = sum(input_value_in_base_units * input_age)/size_in_bytes

You need a priority of 57,600 or higher to avoid spam fees.

IIRC (and I may not be) the simple version is 1 coin 1 day.

IF you receive 1 BTC you need to wait 1 day to avoid a fee when transferring it.
If you receive 10 BTC you need to wait 2.4 hours to avoid a fee when transferring it.

The wallet always attempts to reduce the fee using older coins as necessary to minimize or eliminate any fee.
donator
Activity: 1218
Merit: 1079
Gerald Davis
February 23, 2012, 08:39:44 PM
#6
In addition to the previous points every block empty or not makes it one block more work to rewrite a particular previous block making the tx in them a little bit more secure.

Very good point.  So anyone who's transactions were in the prior blocks benefits from increased depth in the blockchain.
legendary
Activity: 1246
Merit: 1016
Strength in numbers
February 23, 2012, 08:19:07 PM
#5
In addition to the previous points every block empty or not makes it one block more work to rewrite a particular previous block making the tx in them a little bit more secure.
full member
Activity: 184
Merit: 100
February 23, 2012, 12:23:50 PM
#4
Thanks for the clarification.
Pages:
Jump to: