Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F12910218
amount.h
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
2 KB
Subscribers
None
amount.h
View Options
// Copyright (c) 2009-2010 Satoshi Nakamoto
// Copyright (c) 2009-2015 The Bitcoin Core developers
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
#ifndef BITCOIN_AMOUNT_H
#define BITCOIN_AMOUNT_H
#include
"serialize.h"
#include
<stdlib.h>
#include
<string>
/** Amount in satoshis (Can be negative) */
typedef
int64_t
CAmount
;
static
const
CAmount
COIN
=
100000000
;
static
const
CAmount
CENT
=
1000000
;
extern
const
std
::
string
CURRENCY_UNIT
;
/** No amount larger than this (in satoshi) is valid.
*
* Note that this constant is *not* the total money supply, which in Bitcoin
* currently happens to be less than 21,000,000 BTC for various reasons, but
* rather a sanity check. As this sanity check is used by consensus-critical
* validation code, the exact value of the MAX_MONEY constant is consensus
* critical; in unusual circumstances like a(nother) overflow bug that allowed
* for the creation of coins out of thin air modification could lead to a fork.
* */
static
const
CAmount
MAX_MONEY
=
21000000
*
COIN
;
inline
bool
MoneyRange
(
const
CAmount
&
nValue
)
{
return
(
nValue
>=
0
&&
nValue
<=
MAX_MONEY
);
}
/**
* Fee rate in satoshis per kilobyte: CAmount / kB
*/
class
CFeeRate
{
private
:
CAmount
nSatoshisPerK
;
// unit is satoshis-per-1,000-bytes
public
:
/** Fee rate of 0 satoshis per kB */
CFeeRate
()
:
nSatoshisPerK
(
0
)
{
}
explicit
CFeeRate
(
const
CAmount
&
_nSatoshisPerK
)
:
nSatoshisPerK
(
_nSatoshisPerK
)
{
}
/** Constructor for a fee rate in satoshis per kB. The size in bytes must not exceed (2^63 - 1)*/
CFeeRate
(
const
CAmount
&
nFeePaid
,
size_t
nBytes
);
CFeeRate
(
const
CFeeRate
&
other
)
{
nSatoshisPerK
=
other
.
nSatoshisPerK
;
}
/**
* Return the fee in satoshis for the given size in bytes.
*/
CAmount
GetFee
(
size_t
nBytes
)
const
;
/**
* Return the fee in satoshis for a size of 1000 bytes
*/
CAmount
GetFeePerK
()
const
{
return
GetFee
(
1000
);
}
friend
bool
operator
<
(
const
CFeeRate
&
a
,
const
CFeeRate
&
b
)
{
return
a
.
nSatoshisPerK
<
b
.
nSatoshisPerK
;
}
friend
bool
operator
>
(
const
CFeeRate
&
a
,
const
CFeeRate
&
b
)
{
return
a
.
nSatoshisPerK
>
b
.
nSatoshisPerK
;
}
friend
bool
operator
==
(
const
CFeeRate
&
a
,
const
CFeeRate
&
b
)
{
return
a
.
nSatoshisPerK
==
b
.
nSatoshisPerK
;
}
friend
bool
operator
<=
(
const
CFeeRate
&
a
,
const
CFeeRate
&
b
)
{
return
a
.
nSatoshisPerK
<=
b
.
nSatoshisPerK
;
}
friend
bool
operator
>=
(
const
CFeeRate
&
a
,
const
CFeeRate
&
b
)
{
return
a
.
nSatoshisPerK
>=
b
.
nSatoshisPerK
;
}
CFeeRate
&
operator
+=
(
const
CFeeRate
&
a
)
{
nSatoshisPerK
+=
a
.
nSatoshisPerK
;
return
*
this
;
}
std
::
string
ToString
()
const
;
ADD_SERIALIZE_METHODS
;
template
<
typename
Stream
,
typename
Operation
>
inline
void
SerializationOp
(
Stream
&
s
,
Operation
ser_action
,
int
nType
,
int
nVersion
)
{
READWRITE
(
nSatoshisPerK
);
}
};
#endif
// BITCOIN_AMOUNT_H
File Metadata
Details
Attached
Mime Type
text/x-c++
Expires
Wed, Jan 29, 16:46 (10 h, 53 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
5044204
Default Alt Text
amount.h (2 KB)
Attached To
rABC Bitcoin ABC
Event Timeline
Log In to Comment