Bitcoin Forum

Bitcoin => Development & Technical Discussion => Topic started by: bytemaster on July 29, 2010, 04:17:20 PM



Title: Transactions less than 0.01 BTC
Post by: bytemaster on July 29, 2010, 04:17:20 PM
Suppose I have program that wants to use the RPC interface to send BTC less than 0.01?

I know that in theory the underlying protocol supports it (deflation in the future), but why design an API that *will have to change*?   If someone uses the raw protocol to send .000001 BTC what will the client display? 

I am not saying that there would be very small transactions, I am saying that some transactions may want much higher RESOLUTION.  Particularly for automatic, auto-negotiated, markets. 

What would happen if I modified my client to display and enter .000001BTC and then used that GUI to send .000001 to someone with the normal client?


Title: Re: Transactions less than 0.01 BTC
Post by: Olipro on July 29, 2010, 04:26:21 PM
they'd get a payment for 0.000001 which the GUI would quite probably round to 0.00... maybe 0.01 but I doubt it


Title: Re: Transactions less than 0.01 BTC
Post by: knightmb on July 29, 2010, 05:01:10 PM
As far as I know, the client will keep track of it properly, you just won't be able to spend it because the lowest the GUI allows is 0.01 so far.


Title: Re: Transactions less than 0.01 BTC
Post by: EricJ2190 on July 29, 2010, 05:50:44 PM
If you want to test this, you can use my fullprecision branch of Gavin's test network.

http://github.com/EricJ2190/bitcoin-git/tree/fullprecision

I believe the normal client simply truncates the values whenever they are displayed.

Code:
string FormatMoney(int64 n, bool fPlus)
{
    n /= CENT;
    string str = strprintf("%"PRI64d".%02"PRI64d, (n > 0 ? n : -n)/100, (n > 0 ? n : -n)%100);
    for (int i = 6; i < str.size(); i += 4)
        if (isdigit(str[str.size() - i - 1]))
            str.insert(str.size() - i, 1, ',');
    if (n < 0)
        str.insert((unsigned int)0, 1, '-');
    else if (fPlus && n > 0)
        str.insert((unsigned int)0, 1, '+');
    return str;
}