Author

Topic: Blockchain Wallet cant send BTC past few days (Read 1842 times)

legendary
Activity: 1526
Merit: 1134
January 28, 2013, 05:32:51 AM
#10
Over time wallets will I think gain defragmentation features so you don't get hit with the big fees all at once. But ultimately SD needs to change. The way it works now is a cute hack but not sustainable.
legendary
Activity: 3472
Merit: 4801
. . . think of it this way, you go to a sandwich shop and buy lunch - instead of handing the cashier a $10 bill to pay for your $6.54 lunch, you hand them a bag of pennies.

Better yet, think of it this way:

You start with a single transaction with a 100 BTC output to you.

You send a single transaction to Satoshi Dice (SD) for 0.01 BTC.  To do this most bitcoin wallets create a transaction that has 1 input (100 BTC) and 2 new outputs (99.99 BTC back to you and 0.01 to SD).

If you lose, SD creates a transaction back to you with a 0.00000001 BTC output.
Your wallet now has 2 outputs it can spend (one for 99.99 BTC and one for 0.00000001 BTC).

If you win SD creates a transaction back to you with with your winnings (perhaps 0.02 BTC?).
Your wallet now has 2 outputs it can spend (one for 99.99 BC and one for 0.02 BTC).

The next time you play, your wallet chooses to spend the 99.99 BTC output.  It creates a new 99.98 BTC output to you and a 0.01 BTC output to SD.

If you lose, SD creates a transaction back to you with a 0.00000001 BTC output.
Your wallet now has 3 outputs it can spend (one for 99.98 BTC, one for 0.00000001 BTC from this play, and one either for 0.02 or 0.00000001 BTC from previously).

If you win SD creates a transaction back to you with with your winnings (perhaps 0.02 BTC?).
Your wallet now has 3 outputs it can spend (one for 99.98 BC, one for 0.02 BTC from this play, one for either 0.02 or 0.00000001 BTC from previously).

Keep at this long enough and that 99+ BTC output will continue to dwindle, and the number of tiny outputs will continue to grow.
Eventually you won't have a single big enough output to spend for your bet.  Your wallet will need to combine all those tiny outputs to create a transaction for the amount of bitcoin you want to spend. Take a look at the transaction you posted and you can see all the tiny outputs that had to be combined to create your transaction.

The Bitcoin-Qt "reference client" would have the same issue.  Most wallets would.

If you receive a single large output (perhaps 50 BTC) at your wallet, you might be able to create a transaction for a bit more than 50 BTC (perhaps 50.01?, perhaps 50.001?) and send it to an address you control.  Then the wallet can sweep up some of that dust along with the single 50BTC output creating a new slightly larger output (as I said, perhaps 50.01 BTC or 50.001?).  After the 50BTC gets a handful of confirmations, you could send it again with a slightly larger amount sweeping up a bit more dust again.  You could do this enough times sending slightly larger amounts each time until all the dust is swept up.

The other option is to wait until BTC becomes far more valuable (assuming it eventually does).  When 0.00001 BTC represents a significantly larger buying power, the fees may be reduced further and quantities as small as 0.0000001 may no longer be considered spammy "dust".


sr. member
Activity: 452
Merit: 250
The more you gamble on SD the more dust spam you accumulate in your wallet. Eventually you will need to try and combine that dust into a larger payment. This is where you get smacked with fees.

Edit: think of it this way, you go to a sandwich shop and buy lunch - instead of handing the cashier a $10 bill to pay for your $6.54 lunch, you hand them a bag of pennies.
sr. member
Activity: 439
Merit: 250
Thanks for all the replies. They were very helpful.

While I understand that most of my transactions consist of micropayments I fully understand the reasoning behind verification and the fees. However, this was not always the case. I have had this wallet for quite a while. Small bets to Satoshi dice were sometimes over 100 per day. Never have I had to wait days for confirmation, nor incurred any percentage fee this high. I am looking back to bets made just 5 months ago; most were as low as .01 and some were as high as 1.5 btc. They would confirm fast and I would get  a return payment (either winning or losing) nearly instantly.

I just want to know what changed and who changed it. Right now, any transaction leaving that wallet is having trouble as well. What I want to know is what changed from a few months ago and what the best way for me to get my coins out of the blockchain wallet. While that wallet has a balance of just over 2 btc I have another wallet that has accumulated 84 btc (on block chain wallet too) and I just want the coins out of there. Suggestions?

-Thanks

Douglas
hero member
Activity: 910
Merit: 1005
Since I have complained a few times the vindictive creeps that run the site prob charged me extra.

Blockchain does not charge any transaction fees, the fee paid is to the bitcoin miners in order to keep the network secure.

Following the standard rules the fee for this transaction should have been higher (0.01 BTC * 43 KB = 0.43 BTC fee) which is why it is taking a long time to confirm. If the transaction never confirms you may need to split it into much smaller transactions or merge it with higher value outputs.
legendary
Activity: 3472
Merit: 4801
Blockchain.info isn't the only place you'll have this fee problem.  The reference code that implements the official protocol should calculate the same fee.  Any client that implements the protocol as specified in the reference code will also have the same fee.  Blaming blockchain.info isn't going to help you.

Code:
int64 CTransaction::GetMinFee(unsigned int nBlockSize, bool fAllowFree,
                              enum GetMinFee_mode mode) const
{
    // Base fee is either MIN_TX_FEE or MIN_RELAY_TX_FEE
    int64 nBaseFee = (mode == GMF_RELAY) ? MIN_RELAY_TX_FEE : MIN_TX_FEE;

    unsigned int nBytes = ::GetSerializeSize(*this, SER_NETWORK, PROTOCOL_VERSION);
    unsigned int nNewBlockSize = nBlockSize + nBytes;
    int64 nMinFee = (1 + (int64)nBytes / 1000) * nBaseFee;

    if (fAllowFree)
    {
        if (nBlockSize == 1)
        {
            // Transactions under 10K are free
            // (about 4500 BTC if made of 50 BTC inputs)
            if (nBytes < 10000)
                nMinFee = 0;
        }
        else
        {
            // Free transaction area
            if (nNewBlockSize < 27000)
                nMinFee = 0;
        }
    }

    // To limit dust spam, require MIN_TX_FEE/MIN_RELAY_TX_FEE if any output is less than 0.01
    if (nMinFee < nBaseFee)
    {
        BOOST_FOREACH(const CTxOut& txout, vout)
            if (txout.nValue < CENT)
                nMinFee = nBaseFee;
    }

    // Raise the price as the block approaches full
    if (nBlockSize != 1 && nNewBlockSize >= MAX_BLOCK_SIZE_GEN/2)
    {
        if (nNewBlockSize >= MAX_BLOCK_SIZE_GEN)
            return MAX_MONEY;
        nMinFee *= MAX_BLOCK_SIZE_GEN / (MAX_BLOCK_SIZE_GEN - nNewBlockSize);
    }

    if (!MoneyRange(nMinFee))
        nMinFee = MAX_MONEY;
    return nMinFee;
}
legendary
Activity: 1526
Merit: 1134
The problem is the way SatoshiDice operates, it's got nothing to do with blockchain.info

Your wallet is full of tiny coins that represent nearly no value at all. In effect you're making a spend composed entirely of micropayments. So the amount of work needed to verify your transaction is much larger than normal but the value moved is much smaller than normal. To avoid Bitcoin being flooded with useless transactions just to break the system, such transactions are charged high fees.

Partly this is SDs fault. It tells you that you lost a bet by sending a tiny micropayment back to your wallet. Eventually you end up with tons of these tiny-as-possible coins which must be aggregated to make a spend.

The fix is twofold:

1) Make bigger bets
2) SD needs to change how it works so it doesn't abuse micropayments as a messaging system

legendary
Activity: 1708
Merit: 1066
If you look at the size of the transaction it is over 43KB. Most simple transactions are less than a kilobyte. That will most likely be the cause of the fee.
sr. member
Activity: 439
Merit: 250
Never mind. It finally just worked after 3 days. Not only that it charged my .02 to send .06 btc to Satoshi Dice. WTF is that about? That is an awfully large fee!

It used to be much lower. Im taking my coins out of blockchain wallet. Since I have complained a few times the vindictive creeps that run the site prob charged me extra.

Basically charged a 40% fee

https://blockchain.info/tx/d0b7fd8d867fc4a4f3a3114e4869732aa088b45b2c732e7648b2be911d097d10
sr. member
Activity: 439
Merit: 250
Anyone else having this problem? I cant send any coins out of my blockchain wallet. I keep waiting a day to see if it was just a temp problem but its been 3 days now and I still cant send any coins. Receiving is no problem
Jump to: