Bugfix: Grammar fixes
This commit is contained in:
parent
18d2832678
commit
7e6d23b171
30 changed files with 79 additions and 80 deletions
|
@ -1,6 +1,6 @@
|
||||||
Deterministic OSX Dmg Notes.
|
Deterministic OSX Dmg Notes.
|
||||||
|
|
||||||
Working OSX DMG's are created in Linux by combining a recent clang,
|
Working OSX DMGs are created in Linux by combining a recent clang,
|
||||||
the Apple's binutils (ld, ar, etc), and DMG authoring tools.
|
the Apple's binutils (ld, ar, etc), and DMG authoring tools.
|
||||||
|
|
||||||
Apple uses clang extensively for development and has upstreamed the necessary
|
Apple uses clang extensively for development and has upstreamed the necessary
|
||||||
|
@ -58,7 +58,7 @@ libdmg-hfsplus project is used to compress it. There are several bugs in this
|
||||||
tool and its maintainer has seemingly abandoned the project. It has been forked
|
tool and its maintainer has seemingly abandoned the project. It has been forked
|
||||||
and is available (with fixes) here: https://github.com/theuni/libdmg-hfsplus .
|
and is available (with fixes) here: https://github.com/theuni/libdmg-hfsplus .
|
||||||
|
|
||||||
The 'dmg' tool has the ability to create DMG's from scratch as well, but this
|
The 'dmg' tool has the ability to create DMGs from scratch as well, but this
|
||||||
functionality is broken. Only the compression feature is currently used.
|
functionality is broken. Only the compression feature is currently used.
|
||||||
Ideally, the creation could be fixed and genisoimage would no longer be necessary.
|
Ideally, the creation could be fixed and genisoimage would no longer be necessary.
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@ BIPs that are implemented by Bitcoin Core (up-to-date up to **v0.10.0**):
|
||||||
* [`BIP 31`](https://github.com/bitcoin/bips/blob/master/bip-0031.mediawiki): The 'pong' protocol message (and the protocol version bump to 60001) has been implemented since **v0.6.1** ([PR #1081](https://github.com/bitcoin/bitcoin/pull/1081)).
|
* [`BIP 31`](https://github.com/bitcoin/bips/blob/master/bip-0031.mediawiki): The 'pong' protocol message (and the protocol version bump to 60001) has been implemented since **v0.6.1** ([PR #1081](https://github.com/bitcoin/bitcoin/pull/1081)).
|
||||||
* [`BIP 34`](https://github.com/bitcoin/bips/blob/master/bip-0034.mediawiki): The rule that requires blocks to contain their height (number) in the coinbase input, and the introduction of version 2 blocks has been implemented since **v0.7.0**. The rule took effect for version 2 blocks as of *block 224413* (March 5th 2013), and version 1 blocks are no longer allowed since *block 227931* (March 25th 2013) ([PR #1526](https://github.com/bitcoin/bitcoin/pull/1526)).
|
* [`BIP 34`](https://github.com/bitcoin/bips/blob/master/bip-0034.mediawiki): The rule that requires blocks to contain their height (number) in the coinbase input, and the introduction of version 2 blocks has been implemented since **v0.7.0**. The rule took effect for version 2 blocks as of *block 224413* (March 5th 2013), and version 1 blocks are no longer allowed since *block 227931* (March 25th 2013) ([PR #1526](https://github.com/bitcoin/bitcoin/pull/1526)).
|
||||||
* [`BIP 35`](https://github.com/bitcoin/bips/blob/master/bip-0035.mediawiki): The 'mempool' protocol message (and the protocol version bump to 60002) has been implemented since **v0.7.0** ([PR #1641](https://github.com/bitcoin/bitcoin/pull/1641)).
|
* [`BIP 35`](https://github.com/bitcoin/bips/blob/master/bip-0035.mediawiki): The 'mempool' protocol message (and the protocol version bump to 60002) has been implemented since **v0.7.0** ([PR #1641](https://github.com/bitcoin/bitcoin/pull/1641)).
|
||||||
* [`BIP 37`](https://github.com/bitcoin/bips/blob/master/bip-0037.mediawiki): The bloom filtering for transaction relaying, partial merkle trees for blocks , and the protocol version bump to 70001 (enabling low-bandwidth SPV clients) has been implemented since **v0.8.0** ([PR #1795](https://github.com/bitcoin/bitcoin/pull/1795)).
|
* [`BIP 37`](https://github.com/bitcoin/bips/blob/master/bip-0037.mediawiki): The bloom filtering for transaction relaying, partial merkle trees for blocks, and the protocol version bump to 70001 (enabling low-bandwidth SPV clients) has been implemented since **v0.8.0** ([PR #1795](https://github.com/bitcoin/bitcoin/pull/1795)).
|
||||||
* [`BIP 42`](https://github.com/bitcoin/bips/blob/master/bip-0042.mediawiki): The bug that would have caused the subsidy schedule to resume after block 13440000 was fixed in **v0.9.2** ([PR #3842](https://github.com/bitcoin/bitcoin/pull/3842)).
|
* [`BIP 42`](https://github.com/bitcoin/bips/blob/master/bip-0042.mediawiki): The bug that would have caused the subsidy schedule to resume after block 13440000 was fixed in **v0.9.2** ([PR #3842](https://github.com/bitcoin/bitcoin/pull/3842)).
|
||||||
* [`BIP 61`](https://github.com/bitcoin/bips/blob/master/bip-0061.mediawiki): The 'reject' protocol message (and the protocol version bump to 70002) was added in **v0.9.0** ([PR #3185](https://github.com/bitcoin/bitcoin/pull/3185)).
|
* [`BIP 61`](https://github.com/bitcoin/bips/blob/master/bip-0061.mediawiki): The 'reject' protocol message (and the protocol version bump to 70002) was added in **v0.9.0** ([PR #3185](https://github.com/bitcoin/bitcoin/pull/3185)).
|
||||||
* [`BIP 66`](https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki): The strict DER rules and associated version 3 blocks have been implemented since **v0.10.0** ([PR #5713](https://github.com/bitcoin/bitcoin/pull/5713)).
|
* [`BIP 66`](https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki): The strict DER rules and associated version 3 blocks have been implemented since **v0.10.0** ([PR #5713](https://github.com/bitcoin/bitcoin/pull/5713)).
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
Mac OS X Build Instructions and Notes
|
Mac OS X Build Instructions and Notes
|
||||||
====================================
|
====================================
|
||||||
This guide will show you how to build bitcoind(headless client) for OSX.
|
This guide will show you how to build bitcoind (headless client) for OSX.
|
||||||
|
|
||||||
Notes
|
Notes
|
||||||
-----
|
-----
|
||||||
|
|
|
@ -195,12 +195,12 @@ Hardening enables the following features:
|
||||||
|
|
||||||
* Position Independent Executable
|
* Position Independent Executable
|
||||||
Build position independent code to take advantage of Address Space Layout Randomization
|
Build position independent code to take advantage of Address Space Layout Randomization
|
||||||
offered by some kernels. An attacker who is able to cause execution of code at an arbitrary
|
offered by some kernels. Attackers who can cause execution of code at an arbitrary memory
|
||||||
memory location is thwarted if he or she doesn't know where anything useful is located.
|
location are thwarted if they don't know where anything useful is located.
|
||||||
The stack and heap are randomly located by default but this allows the code section to be
|
The stack and heap are randomly located by default but this allows the code section to be
|
||||||
randomly located as well.
|
randomly located as well.
|
||||||
|
|
||||||
On an Amd64 processor where a library was not compiled with -fPIC, this will cause an error
|
On an AMD64 processor where a library was not compiled with -fPIC, this will cause an error
|
||||||
such as: "relocation R_X86_64_32 against `......' can not be used when making a shared object;"
|
such as: "relocation R_X86_64_32 against `......' can not be used when making a shared object;"
|
||||||
|
|
||||||
To test that you have built PIE executable, install scanelf, part of paxutils, and use:
|
To test that you have built PIE executable, install scanelf, part of paxutils, and use:
|
||||||
|
|
|
@ -53,7 +53,7 @@ bool function(int arg1, const char *arg2)
|
||||||
```
|
```
|
||||||
A complete list of `@xxx` commands can be found at http://www.stack.nl/~dimitri/doxygen/manual/commands.html.
|
A complete list of `@xxx` commands can be found at http://www.stack.nl/~dimitri/doxygen/manual/commands.html.
|
||||||
As Doxygen recognizes the comments by the delimiters (`/**` and `*/` in this case), you don't
|
As Doxygen recognizes the comments by the delimiters (`/**` and `*/` in this case), you don't
|
||||||
*need* to provide any commands for a comment to be valid, just a description text is fine.
|
*need* to provide any commands for a comment to be valid; just a description text is fine.
|
||||||
|
|
||||||
To describe a class use the same construct above the class definition:
|
To describe a class use the same construct above the class definition:
|
||||||
```c++
|
```c++
|
||||||
|
@ -175,7 +175,7 @@ Threads
|
||||||
Pull Request Terminology
|
Pull Request Terminology
|
||||||
------------------------
|
------------------------
|
||||||
|
|
||||||
Concept ACK - Agree with the idea and overall direction, but haven't reviewed the code changes or tested them.
|
Concept ACK - Agree with the idea and overall direction, but have neither reviewed nor tested the code changes.
|
||||||
|
|
||||||
utACK (untested ACK) - Reviewed and agree with the code changes but haven't actually tested them.
|
utACK (untested ACK) - Reviewed and agree with the code changes but haven't actually tested them.
|
||||||
|
|
||||||
|
@ -183,4 +183,4 @@ Tested ACK - Reviewed the code changes and have verified the functionality or bu
|
||||||
|
|
||||||
ACK - A loose ACK can be confusing. It's best to avoid them unless it's a documentation/comment only change in which case there is nothing to test/verify; therefore the tested/untested distinction is not there.
|
ACK - A loose ACK can be confusing. It's best to avoid them unless it's a documentation/comment only change in which case there is nothing to test/verify; therefore the tested/untested distinction is not there.
|
||||||
|
|
||||||
NACK - Disagree with the code changes/concept. Should be accompanied by an explanation.
|
NACK - Disagree with the code changes/concept. Should be accompanied by an explanation.
|
||||||
|
|
|
@ -10,15 +10,14 @@ Other implementations of Bitcoin software may also use the same
|
||||||
seeds and may be more exposed. In light of this exposure, this
|
seeds and may be more exposed. In light of this exposure, this
|
||||||
document establishes some basic expectations for operating dnsseeds.
|
document establishes some basic expectations for operating dnsseeds.
|
||||||
|
|
||||||
0. A DNS seed operating organization or person is expected
|
0. A DNS seed operating organization or person is expected to follow good
|
||||||
to follow good host security practices and maintain control of
|
host security practices, maintain control of applicable infrastructure,
|
||||||
their serving infrastructure and not sell or transfer control of their
|
and not sell or transfer control of the DNS seed. Any hosting services
|
||||||
DNS seed. Any hosting services contracted by the operator are
|
contracted by the operator are equally expected to uphold these expectations.
|
||||||
equally expected to uphold these expectations.
|
|
||||||
|
|
||||||
1. The DNS seed results must consist exclusively of fairly selected and
|
1. The DNS seed results must consist exclusively of fairly selected and
|
||||||
functioning Bitcoin nodes from the public network to the best of the
|
functioning Bitcoin nodes from the public network to the best of the
|
||||||
operators understanding and capability.
|
operator's understanding and capability.
|
||||||
|
|
||||||
2. For the avoidance of doubt, the results may be randomized but must not
|
2. For the avoidance of doubt, the results may be randomized but must not
|
||||||
single-out any group of hosts to receive different results unless due to an
|
single-out any group of hosts to receive different results unless due to an
|
||||||
|
@ -28,7 +27,7 @@ urgent technical necessity and disclosed.
|
||||||
|
|
||||||
4. Any logging of DNS queries should be only that which is necessary
|
4. Any logging of DNS queries should be only that which is necessary
|
||||||
for the operation of the service or urgent health of the Bitcoin
|
for the operation of the service or urgent health of the Bitcoin
|
||||||
network and must not be retained longer than necessary or disclosed
|
network and must not be retained longer than necessary nor disclosed
|
||||||
to any third party.
|
to any third party.
|
||||||
|
|
||||||
5. Information gathered as a result of the operators node-spidering
|
5. Information gathered as a result of the operators node-spidering
|
||||||
|
|
|
@ -87,7 +87,7 @@ After creating the VM, we need to configure it.
|
||||||
|
|
||||||
![](gitian-building/network_settings.png)
|
![](gitian-building/network_settings.png)
|
||||||
|
|
||||||
- Click `Advanced`, then `Port Forwarding`. We want to set up a port through where we can reach the VM to get files in and out.
|
- Click `Advanced`, then `Port Forwarding`. We want to set up a port through which we can reach the VM to get files in and out.
|
||||||
- Create a new rule by clicking the plus icon.
|
- Create a new rule by clicking the plus icon.
|
||||||
|
|
||||||
![](gitian-building/port_forwarding_rules.png)
|
![](gitian-building/port_forwarding_rules.png)
|
||||||
|
@ -111,7 +111,7 @@ Installing Debian
|
||||||
|
|
||||||
This section will explain how to install Debian on the newly created VM.
|
This section will explain how to install Debian on the newly created VM.
|
||||||
|
|
||||||
- Choose the non-graphical installer. We do not need the graphical environment, it will only increase installation time and disk usage.
|
- Choose the non-graphical installer. We do not need the graphical environment; it will only increase installation time and disk usage.
|
||||||
|
|
||||||
![](gitian-building/debian_install_1_boot_menu.png)
|
![](gitian-building/debian_install_1_boot_menu.png)
|
||||||
|
|
||||||
|
@ -144,7 +144,7 @@ and proceed, just press `Enter`. To select a different button, press `Tab`.
|
||||||
|
|
||||||
![](gitian-building/debian_install_9_user_password.png)
|
![](gitian-building/debian_install_9_user_password.png)
|
||||||
|
|
||||||
- The installer will set up the clock using a time server, this process should be automatic
|
- The installer will set up the clock using a time server; this process should be automatic
|
||||||
- Set up the clock: choose a time zone (depends on the locale settings that you picked earlier; specifics don't matter)
|
- Set up the clock: choose a time zone (depends on the locale settings that you picked earlier; specifics don't matter)
|
||||||
|
|
||||||
![](gitian-building/debian_install_10_configure_clock.png)
|
![](gitian-building/debian_install_10_configure_clock.png)
|
||||||
|
@ -371,7 +371,7 @@ COMMIT=2014_03_windows_unicode_path
|
||||||
Signing externally
|
Signing externally
|
||||||
-------------------
|
-------------------
|
||||||
|
|
||||||
If you want to do the PGP signing on another device that's also possible; just define `SIGNER` as mentioned
|
If you want to do the PGP signing on another device, that's also possible; just define `SIGNER` as mentioned
|
||||||
and follow the steps in the build process as normal.
|
and follow the steps in the build process as normal.
|
||||||
|
|
||||||
gpg: skipped "laanwj": secret key not available
|
gpg: skipped "laanwj": secret key not available
|
||||||
|
|
|
@ -63,7 +63,7 @@ can then be controlled by group membership.
|
||||||
|
|
||||||
4a) systemd
|
4a) systemd
|
||||||
|
|
||||||
Installing this .service file consists on just copying it to
|
Installing this .service file consists of just copying it to
|
||||||
/usr/lib/systemd/system directory, followed by the command
|
/usr/lib/systemd/system directory, followed by the command
|
||||||
"systemctl daemon-reload" in order to update running systemd configuration.
|
"systemctl daemon-reload" in order to update running systemd configuration.
|
||||||
|
|
||||||
|
|
|
@ -32,7 +32,7 @@ QToolBar *toolbar = addToolBar(tr("Tabs toolbar"));
|
||||||
### Creating a pull-request
|
### Creating a pull-request
|
||||||
For general PRs, you shouldn’t include any updates to the translation source files. They will be updated periodically, primarily around pre-releases, allowing time for any new phrases to be translated before public releases. This is also important in avoiding translation related merge conflicts.
|
For general PRs, you shouldn’t include any updates to the translation source files. They will be updated periodically, primarily around pre-releases, allowing time for any new phrases to be translated before public releases. This is also important in avoiding translation related merge conflicts.
|
||||||
|
|
||||||
When an updated source file is merged into the Github repo, Transifex will automatically detect it (although it can take several hours). Once processed, the new strings will show up as "Remaining" in the Transifex web interface and are ready for translators.
|
When an updated source file is merged into the Github repo, Transifex will automatically detect it (although it can take several hours). Once processed, the new strings will show up as "Remaining" in the Transifex web interface and are ready for translators.
|
||||||
|
|
||||||
To create the pull-request, use the following commands:
|
To create the pull-request, use the following commands:
|
||||||
```
|
```
|
||||||
|
@ -108,4 +108,4 @@ To create a new language template, you will need to edit the languages manifest
|
||||||
### Questions and general assistance
|
### Questions and general assistance
|
||||||
The Bitcoin-Core translation maintainers include *tcatm, seone, Diapolo, wumpus and luke-jr*.You can find them, and others, in the Freenode IRC chatroom - `irc.freenode.net #bitcoin-dev`.
|
The Bitcoin-Core translation maintainers include *tcatm, seone, Diapolo, wumpus and luke-jr*.You can find them, and others, in the Freenode IRC chatroom - `irc.freenode.net #bitcoin-dev`.
|
||||||
|
|
||||||
If you are a translator, you should also subscribe to the mailing list, https://groups.google.com/forum/#!forum/bitcoin-translators. Announcements will be posted during application pre-releases to notify translators to check for updates.
|
If you are a translator, you should also subscribe to the mailing list, https://groups.google.com/forum/#!forum/bitcoin-translators. Announcements will be posted during application pre-releases to notify translators to check for updates.
|
||||||
|
|
|
@ -28,7 +28,7 @@ Notes
|
||||||
A 200-block -regtest blockchain and wallets for four nodes
|
A 200-block -regtest blockchain and wallets for four nodes
|
||||||
is created the first time a regression test is run and
|
is created the first time a regression test is run and
|
||||||
is stored in the cache/ directory. Each node has 25 mature
|
is stored in the cache/ directory. Each node has 25 mature
|
||||||
blocks (25*50=1250 BTC) in their wallet.
|
blocks (25*50=1250 BTC) in its wallet.
|
||||||
|
|
||||||
After the first run, the cache/ blockchain and wallets are
|
After the first run, the cache/ blockchain and wallets are
|
||||||
copied into a temporary directory and used as the initial
|
copied into a temporary directory and used as the initial
|
||||||
|
|
|
@ -272,7 +272,7 @@ def send_zeropri_transaction(from_node, to_node, amount, fee):
|
||||||
Create&broadcast a zero-priority transaction.
|
Create&broadcast a zero-priority transaction.
|
||||||
Returns (txid, hex-encoded-txdata)
|
Returns (txid, hex-encoded-txdata)
|
||||||
Ensures transaction is zero-priority by first creating a send-to-self,
|
Ensures transaction is zero-priority by first creating a send-to-self,
|
||||||
then using it's output
|
then using its output
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# Create a send-to-self with confirmed inputs:
|
# Create a send-to-self with confirmed inputs:
|
||||||
|
|
|
@ -62,7 +62,7 @@ class WalletTest (BitcoinTestFramework):
|
||||||
walletinfo = self.nodes[0].getwalletinfo()
|
walletinfo = self.nodes[0].getwalletinfo()
|
||||||
assert_equal(walletinfo['immature_balance'], 0)
|
assert_equal(walletinfo['immature_balance'], 0)
|
||||||
|
|
||||||
# Have node0 mine a block, thus they will collect their own fee.
|
# Have node0 mine a block, thus it will collect its own fee.
|
||||||
self.nodes[0].generate(1)
|
self.nodes[0].generate(1)
|
||||||
self.sync_all()
|
self.sync_all()
|
||||||
|
|
||||||
|
|
|
@ -17,8 +17,8 @@
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Extended statistics about a CAddress
|
* Extended statistics about a CAddress
|
||||||
*/
|
*/
|
||||||
class CAddrInfo : public CAddress
|
class CAddrInfo : public CAddress
|
||||||
{
|
{
|
||||||
|
@ -112,7 +112,7 @@ public:
|
||||||
* * Addresses are organized into buckets.
|
* * Addresses are organized into buckets.
|
||||||
* * Address that have not yet been tried go into 1024 "new" buckets.
|
* * Address that have not yet been tried go into 1024 "new" buckets.
|
||||||
* * Based on the address range (/16 for IPv4) of source of the information, 64 buckets are selected at random
|
* * Based on the address range (/16 for IPv4) of source of the information, 64 buckets are selected at random
|
||||||
* * The actual bucket is chosen from one of these, based on the range the address itself is located.
|
* * The actual bucket is chosen from one of these, based on the range in which the address itself is located.
|
||||||
* * One single address can occur in up to 8 different buckets, to increase selection chances for addresses that
|
* * One single address can occur in up to 8 different buckets, to increase selection chances for addresses that
|
||||||
* are seen frequently. The chance for increasing this multiplicity decreases exponentially.
|
* are seen frequently. The chance for increasing this multiplicity decreases exponentially.
|
||||||
* * When adding a new address to a full bucket, a randomly chosen entry (with a bias favoring less recently seen
|
* * When adding a new address to a full bucket, a randomly chosen entry (with a bias favoring less recently seen
|
||||||
|
|
|
@ -32,14 +32,14 @@ enum bloomflags
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* BloomFilter is a probabilistic filter which SPV clients provide
|
* BloomFilter is a probabilistic filter which SPV clients provide
|
||||||
* so that we can filter the transactions we sends them.
|
* so that we can filter the transactions we send them.
|
||||||
*
|
*
|
||||||
* This allows for significantly more efficient transaction and block downloads.
|
* This allows for significantly more efficient transaction and block downloads.
|
||||||
*
|
*
|
||||||
* Because bloom filters are probabilistic, an SPV node can increase the false-
|
* Because bloom filters are probabilistic, a SPV node can increase the false-
|
||||||
* positive rate, making us send them transactions which aren't actually theirs,
|
* positive rate, making us send it transactions which aren't actually its,
|
||||||
* allowing clients to trade more bandwidth for more privacy by obfuscating which
|
* allowing clients to trade more bandwidth for more privacy by obfuscating which
|
||||||
* keys are owned by them.
|
* keys are controlled by them.
|
||||||
*/
|
*/
|
||||||
class CBloomFilter
|
class CBloomFilter
|
||||||
{
|
{
|
||||||
|
|
|
@ -93,8 +93,8 @@ protected:
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the currently selected parameters. This won't change after app startup
|
* Return the currently selected parameters. This won't change after app
|
||||||
* outside of the unit tests.
|
* startup, except for unit tests.
|
||||||
*/
|
*/
|
||||||
const CChainParams &Params();
|
const CChainParams &Params();
|
||||||
|
|
||||||
|
|
|
@ -34,8 +34,8 @@ protected:
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the currently selected parameters. This won't change after app startup
|
* Return the currently selected parameters. This won't change after app
|
||||||
* outside of the unit tests.
|
* startup, except for unit tests.
|
||||||
*/
|
*/
|
||||||
const CBaseChainParams& BaseParams();
|
const CBaseChainParams& BaseParams();
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
|
|
||||||
class CBlockIndex;
|
class CBlockIndex;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Block-chain checkpoints are compiled-in sanity checks.
|
* Block-chain checkpoints are compiled-in sanity checks.
|
||||||
* They are updated every release or three.
|
* They are updated every release or three.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -54,7 +54,7 @@ private:
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Number of verifications that haven't completed yet.
|
* Number of verifications that haven't completed yet.
|
||||||
* This includes elements that are not anymore in queue, but still in
|
* This includes elements that are no longer queued, but still in the
|
||||||
* worker's own batches.
|
* worker's own batches.
|
||||||
*/
|
*/
|
||||||
unsigned int nTodo;
|
unsigned int nTodo;
|
||||||
|
@ -81,7 +81,7 @@ private:
|
||||||
fAllOk &= fOk;
|
fAllOk &= fOk;
|
||||||
nTodo -= nNow;
|
nTodo -= nNow;
|
||||||
if (nTodo == 0 && !fMaster)
|
if (nTodo == 0 && !fMaster)
|
||||||
// We processed the last element; inform the master he or she can exit and return the result
|
// We processed the last element; inform the master it can exit and return the result
|
||||||
condMaster.notify_one();
|
condMaster.notify_one();
|
||||||
} else {
|
} else {
|
||||||
// first iteration
|
// first iteration
|
||||||
|
@ -136,7 +136,7 @@ public:
|
||||||
Loop();
|
Loop();
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Wait until execution finishes, and return whether all evaluations where successful.
|
//! Wait until execution finishes, and return whether all evaluations were successful.
|
||||||
bool Wait()
|
bool Wait()
|
||||||
{
|
{
|
||||||
return Loop(true);
|
return Loop(true);
|
||||||
|
|
|
@ -52,7 +52,7 @@ bool fFeeEstimatesInitialized = false;
|
||||||
|
|
||||||
#ifdef WIN32
|
#ifdef WIN32
|
||||||
// Win32 LevelDB doesn't use filedescriptors, and the ones used for
|
// Win32 LevelDB doesn't use filedescriptors, and the ones used for
|
||||||
// accessing block files, don't count towards to fd_set size limit
|
// accessing block files don't count towards the fd_set size limit
|
||||||
// anyway.
|
// anyway.
|
||||||
#define MIN_CORE_FILEDESCRIPTORS 0
|
#define MIN_CORE_FILEDESCRIPTORS 0
|
||||||
#else
|
#else
|
||||||
|
@ -334,7 +334,7 @@ strUsage += HelpMessageOpt("-reindex", _("Rebuild block chain index from current
|
||||||
strUsage += HelpMessageOpt("-sendfreetransactions", strprintf(_("Send transactions as zero-fee transactions if possible (default: %u)"), 0));
|
strUsage += HelpMessageOpt("-sendfreetransactions", strprintf(_("Send transactions as zero-fee transactions if possible (default: %u)"), 0));
|
||||||
strUsage += HelpMessageOpt("-spendzeroconfchange", strprintf(_("Spend unconfirmed change when sending transactions (default: %u)"), 1));
|
strUsage += HelpMessageOpt("-spendzeroconfchange", strprintf(_("Spend unconfirmed change when sending transactions (default: %u)"), 1));
|
||||||
strUsage += HelpMessageOpt("-txconfirmtarget=<n>", strprintf(_("If paytxfee is not set, include enough fee so transactions begin confirmation on average within n blocks (default: %u)"), 1));
|
strUsage += HelpMessageOpt("-txconfirmtarget=<n>", strprintf(_("If paytxfee is not set, include enough fee so transactions begin confirmation on average within n blocks (default: %u)"), 1));
|
||||||
strUsage += HelpMessageOpt("-maxtxfee=<amt>", strprintf(_("Maximum total fees to use in a single wallet transaction, setting too low may abort large transactions (default: %s)"),
|
strUsage += HelpMessageOpt("-maxtxfee=<amt>", strprintf(_("Maximum total fees to use in a single wallet transaction; setting this too low may abort large transactions (default: %s)"),
|
||||||
FormatMoney(maxTxFee)));
|
FormatMoney(maxTxFee)));
|
||||||
strUsage += HelpMessageOpt("-upgradewallet", _("Upgrade wallet to latest format") + " " + _("on startup"));
|
strUsage += HelpMessageOpt("-upgradewallet", _("Upgrade wallet to latest format") + " " + _("on startup"));
|
||||||
strUsage += HelpMessageOpt("-wallet=<file>", _("Specify wallet file (within data directory)") + " " + strprintf(_("(default: %s)"), "wallet.dat"));
|
strUsage += HelpMessageOpt("-wallet=<file>", _("Specify wallet file (within data directory)") + " " + strprintf(_("(default: %s)"), "wallet.dat"));
|
||||||
|
|
20
src/main.cpp
20
src/main.cpp
|
@ -941,7 +941,7 @@ bool AcceptToMemoryPool(CTxMemPool& pool, CValidationState &state, const CTransa
|
||||||
|
|
||||||
// do all inputs exist?
|
// do all inputs exist?
|
||||||
// Note that this does not check for the presence of actual outputs (see the next check for that),
|
// Note that this does not check for the presence of actual outputs (see the next check for that),
|
||||||
// only helps filling in pfMissingInputs (to determine missing vs spent).
|
// and only helps with filling in pfMissingInputs (to determine missing vs spent).
|
||||||
BOOST_FOREACH(const CTxIn txin, tx.vin) {
|
BOOST_FOREACH(const CTxIn txin, tx.vin) {
|
||||||
if (!view.HaveCoins(txin.prevout.hash)) {
|
if (!view.HaveCoins(txin.prevout.hash)) {
|
||||||
if (pfMissingInputs)
|
if (pfMissingInputs)
|
||||||
|
@ -1277,8 +1277,8 @@ void CheckForkWarningConditionsOnNewFork(CBlockIndex* pindexNewForkTip)
|
||||||
pfork = pfork->pprev;
|
pfork = pfork->pprev;
|
||||||
}
|
}
|
||||||
|
|
||||||
// We define a condition which we should warn the user about as a fork of at least 7 blocks
|
// We define a condition where we should warn the user about as a fork of at least 7 blocks
|
||||||
// who's tip is within 72 blocks (+/- 12 hours if no one mines it) of ours
|
// with a tip within 72 blocks (+/- 12 hours if no one mines it) of ours
|
||||||
// We use 7 blocks rather arbitrarily as it represents just under 10% of sustained network
|
// We use 7 blocks rather arbitrarily as it represents just under 10% of sustained network
|
||||||
// hash rate operating on the fork.
|
// hash rate operating on the fork.
|
||||||
// or a chain that is entirely longer than ours and invalid (note that this should be detected by both)
|
// or a chain that is entirely longer than ours and invalid (note that this should be detected by both)
|
||||||
|
@ -1719,7 +1719,7 @@ bool ConnectBlock(const CBlock& block, CValidationState& state, CBlockIndex* pin
|
||||||
// See BIP30 and http://r6.ca/blog/20120206T005236Z.html for more information.
|
// See BIP30 and http://r6.ca/blog/20120206T005236Z.html for more information.
|
||||||
// This logic is not necessary for memory pool transactions, as AcceptToMemoryPool
|
// This logic is not necessary for memory pool transactions, as AcceptToMemoryPool
|
||||||
// already refuses previously-known transaction ids entirely.
|
// already refuses previously-known transaction ids entirely.
|
||||||
// This rule was originally applied all blocks whose timestamp was after March 15, 2012, 0:00 UTC.
|
// This rule was originally applied to all blocks with a timestamp after March 15, 2012, 0:00 UTC.
|
||||||
// Now that the whole chain is irreversibly beyond that time it is applied to all blocks except the
|
// Now that the whole chain is irreversibly beyond that time it is applied to all blocks except the
|
||||||
// two in the chain that violate it. This prevents exploiting the issue against nodes in their
|
// two in the chain that violate it. This prevents exploiting the issue against nodes in their
|
||||||
// initial block download.
|
// initial block download.
|
||||||
|
@ -1984,7 +1984,7 @@ void static UpdateTip(CBlockIndex *pindexNew) {
|
||||||
if (nUpgraded > 100/2)
|
if (nUpgraded > 100/2)
|
||||||
{
|
{
|
||||||
// strMiscWarning is read by GetWarnings(), called by Qt and the JSON-RPC code to warn the user:
|
// strMiscWarning is read by GetWarnings(), called by Qt and the JSON-RPC code to warn the user:
|
||||||
strMiscWarning = _("Warning: This version is obsolete, upgrade required!");
|
strMiscWarning = _("Warning: This version is obsolete; upgrade required!");
|
||||||
CAlert::Notify(strMiscWarning, true);
|
CAlert::Notify(strMiscWarning, true);
|
||||||
fWarned = true;
|
fWarned = true;
|
||||||
}
|
}
|
||||||
|
@ -3732,7 +3732,7 @@ void static ProcessGetData(CNode* pfrom)
|
||||||
pfrom->PushMessage("merkleblock", merkleBlock);
|
pfrom->PushMessage("merkleblock", merkleBlock);
|
||||||
// CMerkleBlock just contains hashes, so also push any transactions in the block the client did not see
|
// CMerkleBlock just contains hashes, so also push any transactions in the block the client did not see
|
||||||
// This avoids hurting performance by pointlessly requiring a round-trip
|
// This avoids hurting performance by pointlessly requiring a round-trip
|
||||||
// Note that there is currently no way for a node to request any single transactions we didnt send here -
|
// Note that there is currently no way for a node to request any single transactions we didn't send here -
|
||||||
// they must either disconnect and retry or request the full block.
|
// they must either disconnect and retry or request the full block.
|
||||||
// Thus, the protocol spec specified allows for us to provide duplicate txn here,
|
// Thus, the protocol spec specified allows for us to provide duplicate txn here,
|
||||||
// however we MUST always provide at least what the remote peer needs
|
// however we MUST always provide at least what the remote peer needs
|
||||||
|
@ -4059,7 +4059,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
|
||||||
if (inv.type == MSG_BLOCK) {
|
if (inv.type == MSG_BLOCK) {
|
||||||
UpdateBlockAvailability(pfrom->GetId(), inv.hash);
|
UpdateBlockAvailability(pfrom->GetId(), inv.hash);
|
||||||
if (!fAlreadyHave && !fImporting && !fReindex && !mapBlocksInFlight.count(inv.hash)) {
|
if (!fAlreadyHave && !fImporting && !fReindex && !mapBlocksInFlight.count(inv.hash)) {
|
||||||
// First request the headers preceeding the announced block. In the normal fully-synced
|
// First request the headers preceding the announced block. In the normal fully-synced
|
||||||
// case where a new block is announced that succeeds the current tip (no reorganization),
|
// case where a new block is announced that succeeds the current tip (no reorganization),
|
||||||
// there are no such headers.
|
// there are no such headers.
|
||||||
// Secondly, and only when we are close to being synced, we request the announced block directly,
|
// Secondly, and only when we are close to being synced, we request the announced block directly,
|
||||||
|
@ -4466,7 +4466,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
|
||||||
// Nonce mismatches are normal when pings are overlapping
|
// Nonce mismatches are normal when pings are overlapping
|
||||||
sProblem = "Nonce mismatch";
|
sProblem = "Nonce mismatch";
|
||||||
if (nonce == 0) {
|
if (nonce == 0) {
|
||||||
// This is most likely a bug in another implementation somewhere, cancel this ping
|
// This is most likely a bug in another implementation somewhere; cancel this ping
|
||||||
bPingFinished = true;
|
bPingFinished = true;
|
||||||
sProblem = "Nonce zero";
|
sProblem = "Nonce zero";
|
||||||
}
|
}
|
||||||
|
@ -4475,7 +4475,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
|
||||||
sProblem = "Unsolicited pong without ping";
|
sProblem = "Unsolicited pong without ping";
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// This is most likely a bug in another implementation somewhere, cancel this ping
|
// This is most likely a bug in another implementation somewhere; cancel this ping
|
||||||
bPingFinished = true;
|
bPingFinished = true;
|
||||||
sProblem = "Short payload";
|
sProblem = "Short payload";
|
||||||
}
|
}
|
||||||
|
@ -4918,7 +4918,7 @@ bool SendMessages(CNode* pto, bool fSendTrickle)
|
||||||
// In case there is a block that has been in flight from this peer for (2 + 0.5 * N) times the block interval
|
// In case there is a block that has been in flight from this peer for (2 + 0.5 * N) times the block interval
|
||||||
// (with N the number of validated blocks that were in flight at the time it was requested), disconnect due to
|
// (with N the number of validated blocks that were in flight at the time it was requested), disconnect due to
|
||||||
// timeout. We compensate for in-flight blocks to prevent killing off peers due to our own downstream link
|
// timeout. We compensate for in-flight blocks to prevent killing off peers due to our own downstream link
|
||||||
// being saturated. We only count validated in-flight blocks so peers can't advertize nonexisting block hashes
|
// being saturated. We only count validated in-flight blocks so peers can't advertise non-existing block hashes
|
||||||
// to unreasonably increase our timeout.
|
// to unreasonably increase our timeout.
|
||||||
if (!pto->fDisconnect && state.vBlocksInFlight.size() > 0 && state.vBlocksInFlight.front().nTime < nNow - 500000 * consensusParams.nPowTargetSpacing * (4 + state.vBlocksInFlight.front().nValidatedQueuedBefore)) {
|
if (!pto->fDisconnect && state.vBlocksInFlight.size() > 0 && state.vBlocksInFlight.front().nTime < nNow - 500000 * consensusParams.nPowTargetSpacing * (4 + state.vBlocksInFlight.front().nValidatedQueuedBefore)) {
|
||||||
LogPrintf("Timeout downloading block %s from peer=%d, disconnecting\n", state.vBlocksInFlight.front().hash.ToString(), pto->id);
|
LogPrintf("Timeout downloading block %s from peer=%d, disconnecting\n", state.vBlocksInFlight.front().hash.ToString(), pto->id);
|
||||||
|
|
|
@ -75,7 +75,7 @@ static const int MAX_BLOCKS_IN_TRANSIT_PER_PEER = 16;
|
||||||
/** Timeout in seconds during which a peer must stall block download progress before being disconnected. */
|
/** Timeout in seconds during which a peer must stall block download progress before being disconnected. */
|
||||||
static const unsigned int BLOCK_STALLING_TIMEOUT = 2;
|
static const unsigned int BLOCK_STALLING_TIMEOUT = 2;
|
||||||
/** Number of headers sent in one getheaders result. We rely on the assumption that if a peer sends
|
/** Number of headers sent in one getheaders result. We rely on the assumption that if a peer sends
|
||||||
* less than this number, we reached their tip. Changing this value is a protocol upgrade. */
|
* less than this number, we reached its tip. Changing this value is a protocol upgrade. */
|
||||||
static const unsigned int MAX_HEADERS_RESULTS = 2000;
|
static const unsigned int MAX_HEADERS_RESULTS = 2000;
|
||||||
/** Size of the "block download window": how far ahead of our current height do we fetch?
|
/** Size of the "block download window": how far ahead of our current height do we fetch?
|
||||||
* Larger windows tolerate larger download speed differences between peer, but increase the potential
|
* Larger windows tolerate larger download speed differences between peer, but increase the potential
|
||||||
|
|
|
@ -119,8 +119,8 @@ uint256 CPartialMerkleTree::TraverseAndExtract(int height, unsigned int pos, uns
|
||||||
if (pos*2+1 < CalcTreeWidth(height-1)) {
|
if (pos*2+1 < CalcTreeWidth(height-1)) {
|
||||||
right = TraverseAndExtract(height-1, pos*2+1, nBitsUsed, nHashUsed, vMatch);
|
right = TraverseAndExtract(height-1, pos*2+1, nBitsUsed, nHashUsed, vMatch);
|
||||||
if (right == left) {
|
if (right == left) {
|
||||||
// If the left and right branch should never be identical as the transaction
|
// The left and right branches should never be identical, as the transaction
|
||||||
// hashes covered by them must be unique.
|
// hashes covered by them must each be unique.
|
||||||
fBad = true;
|
fBad = true;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -104,7 +104,7 @@ public:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Construct a partial merkle tree from a list of transaction id's, and a mask that selects a subset of them */
|
/** Construct a partial merkle tree from a list of transaction ids, and a mask that selects a subset of them */
|
||||||
CPartialMerkleTree(const std::vector<uint256> &vTxid, const std::vector<bool> &vMatch);
|
CPartialMerkleTree(const std::vector<uint256> &vTxid, const std::vector<bool> &vMatch);
|
||||||
|
|
||||||
CPartialMerkleTree();
|
CPartialMerkleTree();
|
||||||
|
|
|
@ -271,8 +271,8 @@ public:
|
||||||
bool fDisconnect;
|
bool fDisconnect;
|
||||||
// We use fRelayTxes for two purposes -
|
// We use fRelayTxes for two purposes -
|
||||||
// a) it allows us to not relay tx invs before receiving the peer's version message
|
// a) it allows us to not relay tx invs before receiving the peer's version message
|
||||||
// b) the peer may tell us in their version message that we should not relay tx invs
|
// b) the peer may tell us in its version message that we should not relay tx invs
|
||||||
// until they have initialized their bloom filter.
|
// until it has initialized its bloom filter.
|
||||||
bool fRelayTxes;
|
bool fRelayTxes;
|
||||||
CSemaphoreGrant grantOutbound;
|
CSemaphoreGrant grantOutbound;
|
||||||
CCriticalSection cs_filter;
|
CCriticalSection cs_filter;
|
||||||
|
|
|
@ -62,7 +62,7 @@ AskPassphraseDialog::AskPassphraseDialog(Mode mode, QWidget *parent) :
|
||||||
break;
|
break;
|
||||||
case ChangePass: // Ask old passphrase + new passphrase x2
|
case ChangePass: // Ask old passphrase + new passphrase x2
|
||||||
setWindowTitle(tr("Change passphrase"));
|
setWindowTitle(tr("Change passphrase"));
|
||||||
ui->warningLabel->setText(tr("Enter the old and new passphrase to the wallet."));
|
ui->warningLabel->setText(tr("Enter the old passphrase and new passphrase to the wallet."));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
textChanged();
|
textChanged();
|
||||||
|
|
|
@ -129,11 +129,11 @@ CoinControlDialog::CoinControlDialog(QWidget *parent) :
|
||||||
ui->treeWidget->setColumnWidth(COLUMN_DATE, 110);
|
ui->treeWidget->setColumnWidth(COLUMN_DATE, 110);
|
||||||
ui->treeWidget->setColumnWidth(COLUMN_CONFIRMATIONS, 100);
|
ui->treeWidget->setColumnWidth(COLUMN_CONFIRMATIONS, 100);
|
||||||
ui->treeWidget->setColumnWidth(COLUMN_PRIORITY, 100);
|
ui->treeWidget->setColumnWidth(COLUMN_PRIORITY, 100);
|
||||||
ui->treeWidget->setColumnHidden(COLUMN_TXHASH, true); // store transacton hash in this column, but dont show it
|
ui->treeWidget->setColumnHidden(COLUMN_TXHASH, true); // store transacton hash in this column, but don't show it
|
||||||
ui->treeWidget->setColumnHidden(COLUMN_VOUT_INDEX, true); // store vout index in this column, but dont show it
|
ui->treeWidget->setColumnHidden(COLUMN_VOUT_INDEX, true); // store vout index in this column, but don't show it
|
||||||
ui->treeWidget->setColumnHidden(COLUMN_AMOUNT_INT64, true); // store amount int64 in this column, but dont show it
|
ui->treeWidget->setColumnHidden(COLUMN_AMOUNT_INT64, true); // store amount int64 in this column, but don't show it
|
||||||
ui->treeWidget->setColumnHidden(COLUMN_PRIORITY_INT64, true); // store priority int64 in this column, but dont show it
|
ui->treeWidget->setColumnHidden(COLUMN_PRIORITY_INT64, true); // store priority int64 in this column, but don't show it
|
||||||
ui->treeWidget->setColumnHidden(COLUMN_DATE_INT64, true); // store date int64 in this column, but dont show it
|
ui->treeWidget->setColumnHidden(COLUMN_DATE_INT64, true); // store date int64 in this column, but don't show it
|
||||||
|
|
||||||
// default view is sorted by amount desc
|
// default view is sorted by amount desc
|
||||||
sortView(COLUMN_AMOUNT_INT64, Qt::DescendingOrder);
|
sortView(COLUMN_AMOUNT_INT64, Qt::DescendingOrder);
|
||||||
|
@ -408,8 +408,8 @@ void CoinControlDialog::viewItemChanged(QTreeWidgetItem* item, int column)
|
||||||
}
|
}
|
||||||
|
|
||||||
// todo: this is a temporary qt5 fix: when clicking a parent node in tree mode, the parent node
|
// todo: this is a temporary qt5 fix: when clicking a parent node in tree mode, the parent node
|
||||||
// including all childs are partially selected. But the parent node should be fully selected
|
// including all children are partially selected. But the parent node should be fully selected
|
||||||
// as well as the childs. Childs should never be partially selected in the first place.
|
// as well as the children. Children should never be partially selected in the first place.
|
||||||
// Please remove this ugly fix, once the bug is solved upstream.
|
// Please remove this ugly fix, once the bug is solved upstream.
|
||||||
#if QT_VERSION >= 0x050000
|
#if QT_VERSION >= 0x050000
|
||||||
else if (column == COLUMN_CHECKBOX && item->childCount() > 0)
|
else if (column == COLUMN_CHECKBOX && item->childCount() > 0)
|
||||||
|
@ -635,15 +635,15 @@ void CoinControlDialog::updateLabels(WalletModel *model, QDialog* dialog)
|
||||||
l7->setStyleSheet((fDust) ? "color:red;" : ""); // Dust = "yes"
|
l7->setStyleSheet((fDust) ? "color:red;" : ""); // Dust = "yes"
|
||||||
|
|
||||||
// tool tips
|
// tool tips
|
||||||
QString toolTip1 = tr("This label turns red, if the transaction size is greater than 1000 bytes.") + "<br /><br />";
|
QString toolTip1 = tr("This label turns red if the transaction size is greater than 1000 bytes.") + "<br /><br />";
|
||||||
toolTip1 += tr("This means a fee of at least %1 per kB is required.").arg(BitcoinUnits::formatWithUnit(nDisplayUnit, CWallet::minTxFee.GetFeePerK())) + "<br /><br />";
|
toolTip1 += tr("This means a fee of at least %1 per kB is required.").arg(BitcoinUnits::formatWithUnit(nDisplayUnit, CWallet::minTxFee.GetFeePerK())) + "<br /><br />";
|
||||||
toolTip1 += tr("Can vary +/- 1 byte per input.");
|
toolTip1 += tr("Can vary +/- 1 byte per input.");
|
||||||
|
|
||||||
QString toolTip2 = tr("Transactions with higher priority are more likely to get included into a block.") + "<br /><br />";
|
QString toolTip2 = tr("Transactions with higher priority are more likely to get included into a block.") + "<br /><br />";
|
||||||
toolTip2 += tr("This label turns red, if the priority is smaller than \"medium\".") + "<br /><br />";
|
toolTip2 += tr("This label turns red if the priority is smaller than \"medium\".") + "<br /><br />";
|
||||||
toolTip2 += tr("This means a fee of at least %1 per kB is required.").arg(BitcoinUnits::formatWithUnit(nDisplayUnit, CWallet::minTxFee.GetFeePerK()));
|
toolTip2 += tr("This means a fee of at least %1 per kB is required.").arg(BitcoinUnits::formatWithUnit(nDisplayUnit, CWallet::minTxFee.GetFeePerK()));
|
||||||
|
|
||||||
QString toolTip3 = tr("This label turns red, if any recipient receives an amount smaller than %1.").arg(BitcoinUnits::formatWithUnit(nDisplayUnit, ::minRelayTxFee.GetFee(546)));
|
QString toolTip3 = tr("This label turns red if any recipient receives an amount smaller than %1.").arg(BitcoinUnits::formatWithUnit(nDisplayUnit, ::minRelayTxFee.GetFee(546)));
|
||||||
|
|
||||||
// how many satoshis the estimated fee can vary per byte we guess wrong
|
// how many satoshis the estimated fee can vary per byte we guess wrong
|
||||||
double dFeeVary;
|
double dFeeVary;
|
||||||
|
|
|
@ -208,7 +208,7 @@ void OptionsDialog::on_resetButton_clicked()
|
||||||
{
|
{
|
||||||
// confirmation dialog
|
// confirmation dialog
|
||||||
QMessageBox::StandardButton btnRetVal = QMessageBox::question(this, tr("Confirm options reset"),
|
QMessageBox::StandardButton btnRetVal = QMessageBox::question(this, tr("Confirm options reset"),
|
||||||
tr("Client restart required to activate changes.") + "<br><br>" + tr("Client will be shutdown, do you want to proceed?"),
|
tr("Client restart required to activate changes.") + "<br><br>" + tr("Client will be shut down. Do you want to proceed?"),
|
||||||
QMessageBox::Yes | QMessageBox::Cancel, QMessageBox::Cancel);
|
QMessageBox::Yes | QMessageBox::Cancel, QMessageBox::Cancel);
|
||||||
|
|
||||||
if(btnRetVal == QMessageBox::Cancel)
|
if(btnRetVal == QMessageBox::Cancel)
|
||||||
|
|
|
@ -505,7 +505,7 @@ void SendCoinsDialog::processSendCoinsReturn(const WalletModel::SendCoinsReturn
|
||||||
switch(sendCoinsReturn.status)
|
switch(sendCoinsReturn.status)
|
||||||
{
|
{
|
||||||
case WalletModel::InvalidAddress:
|
case WalletModel::InvalidAddress:
|
||||||
msgParams.first = tr("The recipient address is not valid, please recheck.");
|
msgParams.first = tr("The recipient address is not valid. Please recheck.");
|
||||||
break;
|
break;
|
||||||
case WalletModel::InvalidAmount:
|
case WalletModel::InvalidAmount:
|
||||||
msgParams.first = tr("The amount to pay must be larger than 0.");
|
msgParams.first = tr("The amount to pay must be larger than 0.");
|
||||||
|
@ -517,7 +517,7 @@ void SendCoinsDialog::processSendCoinsReturn(const WalletModel::SendCoinsReturn
|
||||||
msgParams.first = tr("The total exceeds your balance when the %1 transaction fee is included.").arg(msgArg);
|
msgParams.first = tr("The total exceeds your balance when the %1 transaction fee is included.").arg(msgArg);
|
||||||
break;
|
break;
|
||||||
case WalletModel::DuplicateAddress:
|
case WalletModel::DuplicateAddress:
|
||||||
msgParams.first = tr("Duplicate address found, can only send to each address once per send operation.");
|
msgParams.first = tr("Duplicate address found: can only send to each address once per send operation.");
|
||||||
break;
|
break;
|
||||||
case WalletModel::TransactionCreationFailed:
|
case WalletModel::TransactionCreationFailed:
|
||||||
msgParams.first = tr("Transaction creation failed!");
|
msgParams.first = tr("Transaction creation failed!");
|
||||||
|
|
|
@ -216,7 +216,7 @@ void SendCoinsEntry::setValue(const SendCoinsRecipient &value)
|
||||||
|
|
||||||
ui->addAsLabel->clear();
|
ui->addAsLabel->clear();
|
||||||
ui->payTo->setText(recipient.address); // this may set a label from addressbook
|
ui->payTo->setText(recipient.address); // this may set a label from addressbook
|
||||||
if (!recipient.label.isEmpty()) // if a label had been set from the addressbook, dont overwrite with an empty label
|
if (!recipient.label.isEmpty()) // if a label had been set from the addressbook, don't overwrite with an empty label
|
||||||
ui->addAsLabel->setText(recipient.label);
|
ui->addAsLabel->setText(recipient.label);
|
||||||
ui->payAmount->setValue(recipient.amount);
|
ui->payAmount->setValue(recipient.amount);
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,8 +35,8 @@ bool bSpendZeroConfChange = true;
|
||||||
bool fSendFreeTransactions = false;
|
bool fSendFreeTransactions = false;
|
||||||
bool fPayAtLeastCustomFee = true;
|
bool fPayAtLeastCustomFee = true;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Fees smaller than this (in satoshi) are considered zero fee (for transaction creation)
|
* Fees smaller than this (in satoshi) are considered zero fee (for transaction creation)
|
||||||
* Override with -mintxfee
|
* Override with -mintxfee
|
||||||
*/
|
*/
|
||||||
CFeeRate CWallet::minTxFee = CFeeRate(1000);
|
CFeeRate CWallet::minTxFee = CFeeRate(1000);
|
||||||
|
@ -529,7 +529,7 @@ bool CWallet::EncryptWallet(const SecureString& strWalletPassphrase)
|
||||||
delete pwalletdbEncryption;
|
delete pwalletdbEncryption;
|
||||||
}
|
}
|
||||||
// We now probably have half of our keys encrypted in memory, and half not...
|
// We now probably have half of our keys encrypted in memory, and half not...
|
||||||
// die and let the user reload their unencrypted wallet.
|
// die and let the user reload the unencrypted wallet.
|
||||||
assert(false);
|
assert(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -541,7 +541,7 @@ bool CWallet::EncryptWallet(const SecureString& strWalletPassphrase)
|
||||||
if (!pwalletdbEncryption->TxnCommit()) {
|
if (!pwalletdbEncryption->TxnCommit()) {
|
||||||
delete pwalletdbEncryption;
|
delete pwalletdbEncryption;
|
||||||
// We now have keys encrypted in memory, but not on disk...
|
// We now have keys encrypted in memory, but not on disk...
|
||||||
// die to avoid confusion and let the user reload their unencrypted wallet.
|
// die to avoid confusion and let the user reload the unencrypted wallet.
|
||||||
assert(false);
|
assert(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1097,7 +1097,7 @@ int CWallet::ScanForWalletTransactions(CBlockIndex* pindexStart, bool fUpdate)
|
||||||
|
|
||||||
void CWallet::ReacceptWalletTransactions()
|
void CWallet::ReacceptWalletTransactions()
|
||||||
{
|
{
|
||||||
// If transcations aren't broadcasted, don't let them into local mempool either
|
// If transactions aren't being broadcasted, don't let them into local mempool either
|
||||||
if (!fBroadcastTransactions)
|
if (!fBroadcastTransactions)
|
||||||
return;
|
return;
|
||||||
LOCK2(cs_main, cs_wallet);
|
LOCK2(cs_main, cs_wallet);
|
||||||
|
|
Loading…
Reference in a new issue